summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-02-12 18:09:43 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-02-12 18:09:43 -0800
commit466fc670a38836dfb81d75f72d46ddcaa12bc3bb (patch)
tree4c0d553d4d02f692892fda077cdd0cb985da9819 /src/compiler
parentf51ed74aa3aa142c8aa9d5f9d03e0c244737f66e (diff)
parent6a7d793388628d9e8d20c59cc327843f33615db0 (diff)
downloadscala-466fc670a38836dfb81d75f72d46ddcaa12bc3bb.tar.gz
scala-466fc670a38836dfb81d75f72d46ddcaa12bc3bb.tar.bz2
scala-466fc670a38836dfb81d75f72d46ddcaa12bc3bb.zip
Merge pull request #2115 from retronym/ticket/7091
SI-7091 Don't try to put a protected accessor in a package.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
index fb8a111da1..67639eb530 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
@@ -67,7 +67,10 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
case t => t
}
acc setInfoAndEnter (tpe cloneInfo acc)
- storeAccessorDefinition(clazz, DefDef(acc, EmptyTree))
+ // Diagnostic for SI-7091
+ if (!accDefs.contains(clazz))
+ reporter.error(sel.pos, s"Internal error: unable to store accessor definition in ${clazz}. clazz.isPackage=${clazz.isPackage}. Accessor required for ${sel} (${showRaw(sel)})")
+ else storeAccessorDefinition(clazz, DefDef(acc, EmptyTree))
acc
}
@@ -288,6 +291,7 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
currentClass.isTrait
&& sym.isProtected
&& sym.enclClass != currentClass
+ && !sym.owner.isPackageClass // SI-7091 no accessor needed package owned (ie, top level) symbols
&& !sym.owner.isTrait
&& (sym.owner.enclosingPackageClass != currentClass.enclosingPackageClass)
&& (qual.symbol.info.member(sym.name) ne NoSymbol)