diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala index 77ad65957d..3ac19650eb 100644 --- a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala +++ b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala @@ -499,8 +499,11 @@ abstract class ExplicitOuter extends InfoTransform case Select(qual, name) => // make not private symbol acessed from inner classes, as well as // symbols accessed from @inline methods + // + // See SI-6552 for an example of why `sym.owner.enclMethod hasAnnotation ScalaInlineClass` + // is not suitable; if we make a method-local class non-private, it mangles outer pointer names. if (currentClass != sym.owner || - (sym.owner.enclMethod hasAnnotation ScalaInlineClass)) + (closestEnclMethod(currentOwner) hasAnnotation ScalaInlineClass)) sym.makeNotPrivate(sym.owner) val qsym = qual.tpe.widen.typeSymbol |