aboutsummaryrefslogtreecommitdiff
path: root/tests/run/traitParamInit.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/traitParamInit.scala')
-rw-r--r--tests/run/traitParamInit.scala30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/run/traitParamInit.scala b/tests/run/traitParamInit.scala
new file mode 100644
index 000000000..37d8a425d
--- /dev/null
+++ b/tests/run/traitParamInit.scala
@@ -0,0 +1,30 @@
+object Trace {
+ private var results = List[Any]()
+ def apply[A](a: A) = {results ::= a; a}
+ def fetchAndClear(): Seq[Any] = try results.reverse finally results = Nil
+}
+trait T(a: Any) {
+ val ta = a
+ Trace(s"T.<init>($ta)")
+ val t_val = Trace("T.val")
+}
+
+trait U(a: Any) extends T {
+ val ua = a
+ Trace(s"U.<init>($ua)")
+}
+
+object Test {
+ def check(expected: Any) = {
+ val actual = Trace.fetchAndClear()
+ if (actual != expected)
+ sys.error(s"\n$actual\n$expected")
+ }
+ def main(args: Array[String]): Unit = {
+ new T(Trace("ta")) with U(Trace("ua")) {}
+ check(List("ta", "T.<init>(ta)", "T.val", "ua", "U.<init>(ua)"))
+
+ new U(Trace("ua")) with T(Trace("ta")) {}
+ check(List("ta", "T.<init>(ta)", "T.val", "ua", "U.<init>(ua)"))
+ }
+}