diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2016-04-20 11:34:12 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2016-06-07 14:18:27 +0200 |
commit | 61fe99b6ad0fcd0a8402435cf15c504ce4b9c4ea (patch) | |
tree | ddeef77670445ae2d08eb8c52ff2b1bdba4aadf3 /src | |
parent | f650b1ef465dd99b43b7178258846c66fcf6cd67 (diff) | |
download | dotty-61fe99b6ad0fcd0a8402435cf15c504ce4b9c4ea.tar.gz dotty-61fe99b6ad0fcd0a8402435cf15c504ce4b9c4ea.tar.bz2 dotty-61fe99b6ad0fcd0a8402435cf15c504ce4b9c4ea.zip |
MoveStatics: fix two bugs.
Unlink the static from the old scope,
and don't drop top-level trees that are not TypeDefs.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/transform/MoveStatics.scala | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/MoveStatics.scala b/src/dotty/tools/dotc/transform/MoveStatics.scala index c7cc947aa..23f19379b 100644 --- a/src/dotty/tools/dotc/transform/MoveStatics.scala +++ b/src/dotty/tools/dotc/transform/MoveStatics.scala @@ -21,6 +21,7 @@ class MoveStatics extends MiniPhaseTransform with SymTransformer { thisTransform def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation = { if (sym.hasAnnotation(defn.ScalaStaticAnnot) && sym.owner.is(Flags.Module)) { + sym.owner.asClass.delete(sym.symbol) sym.owner.companionClass.asClass.enter(sym.symbol) val flags = if (sym.is(Flags.Method)) sym.flags else sym.flags | Flags.Mutable sym.copySymDenotation(owner = sym.owner.companionClass, initFlags = flags) @@ -58,7 +59,7 @@ class MoveStatics extends MiniPhaseTransform with SymTransformer { thisTransform yield if (classes.tail.isEmpty) classes.head else move(classes.head, classes.tail.head) - Trees.flatten(newPairs.toList) + Trees.flatten(newPairs.toList ++ others) } else trees } } |