diff options
author | Martin Odersky <odersky@gmail.com> | 2015-03-11 16:14:35 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-03-11 16:17:19 +0100 |
commit | 72dd9ea1ccbb98ee2dc4bf080772e8d9f13f3d75 (patch) | |
tree | a734f0862ceb8f8a177d45045e47afef7df91f8d /src/dotty/tools/dotc/transform/ExplicitOuter.scala | |
parent | 8195baf78b3305710174fca6f0e3ba58e60ca156 (diff) | |
download | dotty-72dd9ea1ccbb98ee2dc4bf080772e8d9f13f3d75.tar.gz dotty-72dd9ea1ccbb98ee2dc4bf080772e8d9f13f3d75.tar.bz2 dotty-72dd9ea1ccbb98ee2dc4bf080772e8d9f13f3d75.zip |
Fixes to class field initialization
Class fields were not initialized from constructor parameters before.
This is now fixed. The fix uncovered some problems with the treatement
of outer parameters which are now also corrected.
Diffstat (limited to 'src/dotty/tools/dotc/transform/ExplicitOuter.scala')
-rw-r--r-- | src/dotty/tools/dotc/transform/ExplicitOuter.scala | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/transform/ExplicitOuter.scala b/src/dotty/tools/dotc/transform/ExplicitOuter.scala index ba74de0a3..13462693b 100644 --- a/src/dotty/tools/dotc/transform/ExplicitOuter.scala +++ b/src/dotty/tools/dotc/transform/ExplicitOuter.scala @@ -297,5 +297,14 @@ object ExplicitOuter { case ex: ClassCastException => throw new ClassCastException(i"no path exists from ${ctx.owner.enclosingClass} to $toCls") } + + /** The outer parameter definition of a constructor if it needs one */ + def paramDefs(constr: Symbol): List[ValDef] = + if (constr.isConstructor && hasOuterParam(constr.owner.asClass)) { + val MethodType(outerName :: _, outerType :: _) = constr.info + val outerSym = ctx.newSymbol(constr, outerName, Param, outerType) + ValDef(outerSym) :: Nil + } + else Nil } }
\ No newline at end of file |