aboutsummaryrefslogtreecommitdiff
path: root/tests/run
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-06-19 23:12:46 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-19 23:12:57 +0200
commit9bf44f867c1a9f4625dd7fac9575c3e74373402b (patch)
treef60948565b2200e3d93dc0873fcdd0a279ee1f0c /tests/run
parentf3a676a33e075b93d99689f26e76632e57a4d8c3 (diff)
downloaddotty-9bf44f867c1a9f4625dd7fac9575c3e74373402b.tar.gz
dotty-9bf44f867c1a9f4625dd7fac9575c3e74373402b.tar.bz2
dotty-9bf44f867c1a9f4625dd7fac9575c3e74373402b.zip
Map outer accessors to outer paramaters
Map references to outer accessors in secondary constructors to outer parameters. This was the second source of "reference to this before super call" errors.
Diffstat (limited to 'tests/run')
-rw-r--r--tests/run/constructors.check5
-rw-r--r--tests/run/constructors.scala28
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/run/constructors.check b/tests/run/constructors.check
new file mode 100644
index 000000000..0743b7e29
--- /dev/null
+++ b/tests/run/constructors.check
@@ -0,0 +1,5 @@
+x=1 y=2
+x=3 y=3
+x=1 y=1
+x=1 y=2 a=1 b=2 c=a
+x=3 y=3 a=3 b=3 c=b
diff --git a/tests/run/constructors.scala b/tests/run/constructors.scala
new file mode 100644
index 000000000..19afc3d67
--- /dev/null
+++ b/tests/run/constructors.scala
@@ -0,0 +1,28 @@
+// Test constructors, including multiple ones.
+
+class A(x: Int, y: Int) {
+ def this(x: Int) = this(x, x);
+ def this() = this(1);
+ override def toString() = "x=" + x + " y=" + y;
+ class B(val a: Int, b: Int, c: String) {
+ def this(str: String) = this(x, y, str);
+ val xx = a
+ override def toString() =
+ "x=" + x + " y=" + y + " a=" + a + " b=" + b + " c=" + c;
+ }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val a1 = new A(1,2);
+ val a2 = new A(3);
+ val a3 = new A();
+ val b1 = new a1.B(1,2,"a");
+ val b2 = new a2.B("b");
+ Console.println(a1);
+ Console.println(a2);
+ Console.println(a3);
+ Console.println(b1);
+ Console.println(b2);
+ }
+}