diff options
author | Paul Phillips <paulp@improving.org> | 2011-06-06 01:00:48 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-06-06 01:00:48 +0000 |
commit | 1ebbe029dd7ba00444962c9b1493794032a17d6c (patch) | |
tree | afa99ef296bc74ad2afe6eea557125de5932e259 /src/compiler/scala/reflect/internal/Symbols.scala | |
parent | 6ebd6c4c072209f84ed1e71dd5ca2cccadeea9c6 (diff) | |
download | scala-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.scala | 5 |
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 |