diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/transform/Constructors.scala | 5 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/ExplicitOuter.scala | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/transform/Constructors.scala b/src/dotty/tools/dotc/transform/Constructors.scala index 6fb67cd22..8aae3af5b 100644 --- a/src/dotty/tools/dotc/transform/Constructors.scala +++ b/src/dotty/tools/dotc/transform/Constructors.scala @@ -37,7 +37,7 @@ class Constructors extends MiniPhaseTransform with SymTransformer { thisTransfor */ override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation = { def ownerBecomesConstructor(owner: Symbol): Boolean = - (owner.isLocalDummy || owner.isTerm && !owner.is(Method | Lazy)) && + (owner.isLocalDummy || owner.isTerm && !owner.is(MethodOrLazy)) && owner.owner.isClass if (ownerBecomesConstructor(sym.owner)) sym.copySymDenotation(owner = sym.owner.enclosingClass.primaryConstructor) @@ -54,9 +54,8 @@ class Constructors extends MiniPhaseTransform with SymTransformer { thisTransfor * constructor. */ private def mightBeDropped(sym: Symbol)(implicit ctx: Context) = - sym.is(Private, butNot = KeeperFlags) && !sym.is(MutableParamAccessor) + sym.is(Private, butNot = MethodOrLazy) && !sym.is(MutableParamAccessor) - private final val KeeperFlags = Method | Lazy private final val MutableParamAccessor = allOf(Mutable, ParamAccessor) override def transformTemplate(tree: Template)(implicit ctx: Context, info: TransformerInfo): Tree = { diff --git a/src/dotty/tools/dotc/transform/ExplicitOuter.scala b/src/dotty/tools/dotc/transform/ExplicitOuter.scala index 20e367e1f..09f0d695d 100644 --- a/src/dotty/tools/dotc/transform/ExplicitOuter.scala +++ b/src/dotty/tools/dotc/transform/ExplicitOuter.scala @@ -213,7 +213,7 @@ object ExplicitOuter { case id: Ident => id.tpe match { case ref @ TermRef(NoPrefix, _) => - ref.symbol.is(Method) && isOuter(id.symbol.owner.enclosingClass) + ref.symbol.is(Hoistable) && isOuter(id.symbol.owner.enclosingClass) // methods will be placed in enclosing class scope by LambdaLift, so they will get // an outer path then. case _ => false @@ -225,6 +225,8 @@ object ExplicitOuter { } } + private final val Hoistable = Method | Lazy | Module + /** The outer prefix implied by type `tpe` */ private def outerPrefix(tpe: Type)(implicit ctx: Context): Type = tpe match { case tpe: TypeRef => |