aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/MoveStatics.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2016-04-20 11:34:12 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2016-06-07 14:18:27 +0200
commit61fe99b6ad0fcd0a8402435cf15c504ce4b9c4ea (patch)
treeddeef77670445ae2d08eb8c52ff2b1bdba4aadf3 /src/dotty/tools/dotc/transform/MoveStatics.scala
parentf650b1ef465dd99b43b7178258846c66fcf6cd67 (diff)
downloaddotty-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/dotty/tools/dotc/transform/MoveStatics.scala')
-rw-r--r--src/dotty/tools/dotc/transform/MoveStatics.scala3
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
}
}