summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Symbols.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-06-06 01:00:48 +0000
committerPaul Phillips <paulp@improving.org>2011-06-06 01:00:48 +0000
commit1ebbe029dd7ba00444962c9b1493794032a17d6c (patch)
treeafa99ef296bc74ad2afe6eea557125de5932e259 /src/compiler/scala/reflect/internal/Symbols.scala
parent6ebd6c4c072209f84ed1e71dd5ca2cccadeea9c6 (diff)
downloadscala-1ebbe029dd7ba00444962c9b1493794032a17d6c.tar.gz
scala-1ebbe029dd7ba00444962c9b1493794032a17d6c.tar.bz2
scala-1ebbe029dd7ba00444962c9b1493794032a17d6c.zip
Carved out access exception for java protected ...
Carved out access exception for java protected statics, which otherwise cannot be accessed from scala. Changes close status of #1806, no review.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Symbols.scala')
-rw-r--r--src/compiler/scala/reflect/internal/Symbols.scala5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/scala/reflect/internal/Symbols.scala b/src/compiler/scala/reflect/internal/Symbols.scala
index a37fc16ba5..fb135a49d6 100644
--- a/src/compiler/scala/reflect/internal/Symbols.scala
+++ b/src/compiler/scala/reflect/internal/Symbols.scala
@@ -695,10 +695,13 @@ trait Symbols /* extends reflect.generic.Symbols*/ { self: SymbolTable =>
final def hasAllFlags(mask: Long): Boolean = (flags & mask) == mask
/** The class or term up to which this symbol is accessible,
- * or RootClass if it is public.
+ * or RootClass if it is public. As java protected statics are
+ * otherwise completely inaccessible in scala, they are treated
+ * as public.
*/
def accessBoundary(base: Symbol): Symbol = {
if (hasFlag(PRIVATE) || isLocal) owner
+ else if (hasAllFlags(PROTECTED | STATIC | JAVA)) RootClass
else if (hasAccessBoundary && !phase.erasedTypes) privateWithin
else if (hasFlag(PROTECTED)) base
else RootClass