Skip to content

Instantly share code, notes, and snippets.

@casualjim
Created January 30, 2012 15:58
Show Gist options
  • Save casualjim/1705121 to your computer and use it in GitHub Desktop.
Save casualjim/1705121 to your computer and use it in GitHub Desktop.
scala> trait A {
| private val a = "a"
| private lazy val b = "b"
| private def c = "c"
| private var d = "d"
| }
defined trait A
scala> abstract class B {
| val a = "aa"
| lazy val b = "bb"
| def c = "c"
| var d = "dd"
| }
defined class B
scala> class C extends B with A
<console>:9: error: overriding method c in class B of type => java.lang.String;
method c in trait A$class of type => java.lang.String has weaker access privileges; it should not be private
class C extends B with A
^
scala> trait AA {
| private val a = "a"
| def bbb ="bbb"
| }
defined trait AA
scala> class D extends B with AA
defined class D
scala> trait BB {
| private lazy val b = "b"
| }
defined trait BB
scala> class E extends B with BB
defined class E
scala> trait CC {
| private def c = "c"
| def ccc = "ccc"
| }
defined trait CC
scala> class F extends B with CC
<console>:9: error: overriding method c in class B of type => java.lang.String;
method c in trait CC$class of type => java.lang.String has weaker access privileges; it should not be private
class F extends B with CC
^
scala> trait DD {
| private var d = "d"
| def ddd = "ddd"
| }
defined trait DD
scala> class G extends B with DD
defined class G
scala> trait BB {
| private val b = 2
| }
defined trait BB
scala> abstract class B {
| val b = "two"
| }
defined class B
scala> new B with BB
res0: B with BB = $anon$1@461014
scala> res0.b
res1: java.lang.String = two
scala> trait CC {
| private lazy val a = 33
| }
defined trait CC
scala> abstract class C {
| lazy val a = "thirty three"
| }
defined class C
scala> new C with CC
res2: C with CC = $anon$1@7742683
scala> res2.a
res3: java.lang.String = thirty three
scala> trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; class C extends B with A; (new C).a
<console>:9: error: lazy value a in trait A cannot be accessed in C
(new C).a
^
scala> trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; class C extends B with A;
<console>:7: error: overriding lazy value a in class B of type java.lang.String;
lazy value a in trait A of type Int has weaker access privileges; it should not be private
trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; class C extends B with A;
^
scala> trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" };
defined trait A
defined class B
scala> (new B with A).a
res1: java.lang.String = a
scala> class C extends B with A
defined class C
scala> (new C).a
res2: java.lang.String = a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment