diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-08-13 16:21:44 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-08-13 16:21:44 +0000 |
commit | d0f20624930e529f327ebc83cf2c042056cabb7f (patch) | |
tree | 5fedaeaeb8f412f894c60c24c182921191e9f85e /src/compiler/scala/tools/nsc/typechecker/Namers.scala | |
parent | 9550c2077cc69434a460171ddd021a1de7ca1da4 (diff) | |
download | scala-d0f20624930e529f327ebc83cf2c042056cabb7f.tar.gz scala-d0f20624930e529f327ebc83cf2c042056cabb7f.tar.bz2 scala-d0f20624930e529f327ebc83cf2c042056cabb7f.zip |
closes #3663.
namers wasn't setting privateWithin on java-defined variables (btw, )
shouldn't clone carry over privateWithin? better treatment of linked )
class access boundary (only check for access within linked class if it )
actually exists )
would have liked more control for the test case: only javac should
compile the java file, then scalac should compile the scala file and
fail
review by odersky
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index b3ea178aaa..91d7b1d12c 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -374,8 +374,9 @@ trait Namers { self: Analyzer => name.endsWith(nme.OUTER, nme.OUTER.length) || context.unit.isJava) && !mods.isLazy) { - tree.symbol = enterInScope(owner.newValue(tree.pos, name) - .setFlag(mods.flags)) + val vsym = owner.newValue(tree.pos, name).setFlag(mods.flags); + if(context.unit.isJava) setPrivateWithin(tree, vsym, mods) // #3663 + tree.symbol = enterInScope(vsym) finish } else { val mods1 = @@ -418,7 +419,7 @@ trait Namers { self: Analyzer => addBeanGetterSetter(vd, getter) } case DefDef(mods, nme.CONSTRUCTOR, tparams, _, _, _) => - var sym = owner.newConstructor(tree.pos).setFlag(mods.flags | owner.getFlag(ConstrFlags)) + val sym = owner.newConstructor(tree.pos).setFlag(mods.flags | owner.getFlag(ConstrFlags)) setPrivateWithin(tree, sym, mods) tree.symbol = enterInScope(sym) finishWith(tparams) @@ -428,7 +429,7 @@ trait Namers { self: Analyzer => case TypeDef(mods, name, tparams, _) => var flags: Long = mods.flags if ((flags & PARAM) != 0L) flags |= DEFERRED - var sym = new TypeSymbol(owner, tree.pos, name).setFlag(flags) + val sym = new TypeSymbol(owner, tree.pos, name).setFlag(flags) setPrivateWithin(tree, sym, mods) tree.symbol = enterInScope(sym) finishWith(tparams) |