summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2010-08-13 16:21:44 +0000
committerAdriaan Moors <adriaan.moors@epfl.ch>2010-08-13 16:21:44 +0000
commitd0f20624930e529f327ebc83cf2c042056cabb7f (patch)
tree5fedaeaeb8f412f894c60c24c182921191e9f85e /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parent9550c2077cc69434a460171ddd021a1de7ca1da4 (diff)
downloadscala-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.scala9
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)