diff options
author | Martin Odersky <odersky@gmail.com> | 2015-06-20 00:44:47 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-06-20 00:45:02 +0200 |
commit | 9a4b5e7c306eb3f1c82ace10dd62576473b1dec1 (patch) | |
tree | 9580b1faebdee6cd0a55cfba71526cb5046e3897 | |
parent | c093792189f49c3e72ada99ca0fdb97e4023ef78 (diff) | |
download | dotty-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.scala | 8 | ||||
-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 |