aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dark@d-d.me>2015-05-04 19:00:56 +0200
committerDmitry Petrashko <dark@d-d.me>2015-05-04 19:00:56 +0200
commitee51ea9ab9bab7852c4eaa16a099436b1cd2bc2f (patch)
treecc8c8e45ef497b44d4d9d0d9a9c4add5f84e1c22 /src
parent61ddff45164aa23a06c255596c1c2d53cdf0e76c (diff)
parent14d506a86f5920ac50777f1bbb7aade0557d6122 (diff)
downloaddotty-ee51ea9ab9bab7852c4eaa16a099436b1cd2bc2f.tar.gz
dotty-ee51ea9ab9bab7852c4eaa16a099436b1cd2bc2f.tar.bz2
dotty-ee51ea9ab9bab7852c4eaa16a099436b1cd2bc2f.zip
Merge pull request #529 from dotty-staging/fix/#503
Fix of #503
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/Constructors.scala5
-rw-r--r--src/dotty/tools/dotc/transform/ExplicitOuter.scala4
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 =>