summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-04-02 13:18:04 -0700
committerPaul Phillips <paulp@improving.org>2013-04-02 13:18:04 -0700
commit695c5359d3ffd68c602d14d42ecd23fe31aef3d9 (patch)
tree12a4de7c4495a23f1cafaa976313c8ea9f375be0 /src/compiler
parentef883690fe33f5f2e4c1c3a5f98ec42ae487e548 (diff)
parentca9c8efac5694d6dbfe1d0393c2e7485a01c3ef5 (diff)
downloadscala-695c5359d3ffd68c602d14d42ecd23fe31aef3d9.tar.gz
scala-695c5359d3ffd68c602d14d42ecd23fe31aef3d9.tar.bz2
scala-695c5359d3ffd68c602d14d42ecd23fe31aef3d9.zip
Merge pull request #2319 from retronym/ticket/6793
SI-6793 Don't use super param accessors if inaccessible.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
index 67639eb530..fa72ad64bf 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
@@ -267,9 +267,16 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
}
}
- // direct calls to aliases of param accessors to the superclass in order to avoid
+
+ def isAccessibleFromSuper(sym: Symbol) = {
+ val pre = SuperType(sym.owner.tpe, qual.tpe)
+ localTyper.context.isAccessible(sym, pre, superAccess = true)
+ }
+
+ // Direct calls to aliases of param accessors to the superclass in order to avoid
// duplicating fields.
- if (sym.isParamAccessor && sym.alias != NoSymbol) {
+ // ... but, only if accessible (SI-6793)
+ if (sym.isParamAccessor && sym.alias != NoSymbol && isAccessibleFromSuper(sym.alias)) {
val result = (localTyper.typedPos(tree.pos) {
Select(Super(qual, tpnme.EMPTY) setPos qual.pos, sym.alias)
}).asInstanceOf[Select]