Skip to content

Commit 59350a7

Browse files
committed
Fix #3000: Do not flatten across packages
1 parent 9f5711f commit 59350a7

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

compiler/src/dotty/tools/dotc/transform/Flatten.scala

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,20 @@ class Flatten extends MiniPhaseTransform with SymTransformer { thisTransform =>
2727
else ref
2828
}
2929

30-
private val liftedDefs = new mutable.ListBuffer[Tree]
30+
private var liftedDefs = new mutable.ListBuffer[Tree]
31+
32+
private lazy val liftedDefsQueue = mutable.Stack.empty.asInstanceOf[mutable.Stack[mutable.ListBuffer[Tree]]]
33+
34+
override def prepareForPackageDef(tree: PackageDef)(implicit ctx: Context) = {
35+
liftedDefsQueue.push(liftedDefs)
36+
liftedDefs = new mutable.ListBuffer[Tree]
37+
this
38+
}
39+
40+
override def transformPackageDef(tree: PackageDef)(implicit ctx: Context, info: TransformerInfo) = {
41+
liftedDefs = liftedDefsQueue.pop()
42+
tree
43+
}
3144

3245
private def liftIfNested(tree: Tree)(implicit ctx: Context, info: TransformerInfo) =
3346
if (ctx.owner is Package) tree

tests/pos/i3000.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class Foo {
2+
new Object { }
3+
}
4+
5+
package bar { }

0 commit comments

Comments
 (0)