aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-06-20 00:44:47 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-20 00:45:02 +0200
commit9a4b5e7c306eb3f1c82ace10dd62576473b1dec1 (patch)
tree9580b1faebdee6cd0a55cfba71526cb5046e3897
parentc093792189f49c3e72ada99ca0fdb97e4023ef78 (diff)
downloaddotty-9a4b5e7c306eb3f1c82ace10dd62576473b1dec1.tar.gz
dotty-9a4b5e7c306eb3f1c82ace10dd62576473b1dec1.tar.bz2
dotty-9a4b5e7c306eb3f1c82ace10dd62576473b1dec1.zip
Map outer fields to parameters in primary constructor
Previously this was only done in secondary constructors; need to do it in primary constructor as well to avoid "reference to this before super" problems.
-rw-r--r--src/dotty/tools/dotc/transform/Constructors.scala8
-rw-r--r--tests/run/NestedClasses.check (renamed from tests/pending/run/NestedClasses.check)0
-rw-r--r--tests/run/NestedClasses.scala (renamed from tests/pending/run/NestedClasses.scala)0
-rw-r--r--tests/run/t8611b.flags (renamed from tests/pending/run/t8611b.flags)0
-rw-r--r--tests/run/t8611b.scala (renamed from tests/pending/run/t8611b.scala)0
5 files changed, 7 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/Constructors.scala b/src/dotty/tools/dotc/transform/Constructors.scala
index d078bab1d..3d7af6bf5 100644
--- a/src/dotty/tools/dotc/transform/Constructors.scala
+++ b/src/dotty/tools/dotc/transform/Constructors.scala
@@ -233,9 +233,15 @@ class Constructors extends MiniPhaseTransform with SymTransformer { thisTransfor
case stats => (Nil, stats)
}
+ val mappedSuperCalls = vparams match {
+ case (outerParam @ ValDef(nme.OUTER, _, _)) :: _ =>
+ superCalls.map(mapOuter(outerParam.symbol).transform)
+ case _ => superCalls
+ }
+
cpy.Template(tree)(
constr = cpy.DefDef(constr)(
- rhs = Block(superCalls ::: copyParams ::: followConstrStats, unitLiteral)),
+ rhs = Block(mappedSuperCalls ::: copyParams ::: followConstrStats, unitLiteral)),
body = clsStats.toList)
}
}
diff --git a/tests/pending/run/NestedClasses.check b/tests/run/NestedClasses.check
index a7ebc386e..a7ebc386e 100644
--- a/tests/pending/run/NestedClasses.check
+++ b/tests/run/NestedClasses.check
diff --git a/tests/pending/run/NestedClasses.scala b/tests/run/NestedClasses.scala
index 6db713e08..6db713e08 100644
--- a/tests/pending/run/NestedClasses.scala
+++ b/tests/run/NestedClasses.scala
diff --git a/tests/pending/run/t8611b.flags b/tests/run/t8611b.flags
index 85d8eb2ba..85d8eb2ba 100644
--- a/tests/pending/run/t8611b.flags
+++ b/tests/run/t8611b.flags
diff --git a/tests/pending/run/t8611b.scala b/tests/run/t8611b.scala
index 75114c2ae..75114c2ae 100644
--- a/tests/pending/run/t8611b.scala
+++ b/tests/run/t8611b.scala