summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2009-03-30 15:21:03 +0000
committerIulian Dragos <jaguarul@gmail.com>2009-03-30 15:21:03 +0000
commit070c60f7472f8c0352287e9d68df8bd35a8ae0a4 (patch)
tree81e13029489f77cc8344cb14ecaeb9c7e1c831c8
parent845c4fcd316ea0ec0b9ad38cad80d77a93607342 (diff)
downloadscala-070c60f7472f8c0352287e9d68df8bd35a8ae0a4.tar.gz
scala-070c60f7472f8c0352287e9d68df8bd35a8ae0a4.tar.bz2
scala-070c60f7472f8c0352287e9d68df8bd35a8ae0a4.zip
Fixed #1094.
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
index 05a496cdce..7ae2ce7bb1 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
@@ -395,8 +395,13 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
* classes, this has to be signaled as error.
*/
private def needsProtectedAccessor(sym: Symbol, pos: Position): Boolean = {
+ def errorRestriction(msg: String) {
+ unit.error(pos, "Implementation restriction: " + msg)
+ }
+
val res = /* settings.debug.value && */
((sym hasFlag PROTECTED)
+ && !sym.owner.isPackageClass
&& (!validCurrentOwner || !(currentOwner.enclClass.thisSym isSubClass sym.owner))
&& (enclPackage(sym.owner) != enclPackage(currentOwner))
&& (enclPackage(sym.owner) == enclPackage(sym.accessBoundary(sym.owner))))
@@ -405,8 +410,8 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
val host = hostForAccessorOf(sym, currentOwner.enclClass)
if (host.thisSym != host) {
if (host.thisSym.tpe.typeSymbol.hasFlag(JAVA))
- unit.error(pos, "Implementation restriction: " + currentOwner.enclClass + " accesses protected "
- + sym + " from self type " + host.thisSym.tpe)
+ errorRestriction(currentOwner.enclClass + " accesses protected " + sym
+ + " from self type " + host.thisSym.tpe)
false
} else res
} else res