summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala5
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