aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2015-05-27 20:41:41 +0200
committerGuillaume Martres <smarter@ubuntu.com>2015-05-28 02:28:27 +0200
commitbeba9703e6a8cfd9d0f541c6a75125cef9eff726 (patch)
treeec9a59ad7d78a6c3d62c4be10eedd84e3773acfd /src
parentc0b693060c666f66cc5f26462e95f74b68975f31 (diff)
downloaddotty-beba9703e6a8cfd9d0f541c6a75125cef9eff726.tar.gz
dotty-beba9703e6a8cfd9d0f541c6a75125cef9eff726.tar.bz2
dotty-beba9703e6a8cfd9d0f541c6a75125cef9eff726.zip
ParamForwarding: do not require param accessors to be private[this]
Also mark the forwarder as Stable otherwise we get a RefChecks error. This fixes #608. Note that we do less parameter forwarding than scalac. See for example D and Y in tests/run/paramForwarding.scala which don't get their own local fields in scalac but do in dotty.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/ParamForwarding.scala4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/transform/ParamForwarding.scala b/src/dotty/tools/dotc/transform/ParamForwarding.scala
index d017e75a2..a10339f85 100644
--- a/src/dotty/tools/dotc/transform/ParamForwarding.scala
+++ b/src/dotty/tools/dotc/transform/ParamForwarding.scala
@@ -43,13 +43,13 @@ class ParamForwarding(thisTransformer: DenotTransformer) {
stat match {
case stat: ValDef =>
val sym = stat.symbol.asTerm
- if (sym is (PrivateLocalParamAccessor, butNot = Mutable)) {
+ if (sym is (ParamAccessor, butNot = Mutable)) {
val idx = superArgs.indexWhere(_.symbol == sym)
if (idx >= 0 && superParamNames(idx) == stat.name) { // supercall to like-named parameter
val alias = inheritedAccessor(sym)
if (alias.exists) {
def forwarder(implicit ctx: Context) = {
- sym.copySymDenotation(initFlags = sym.flags | Method, info = sym.info.ensureMethodic)
+ sym.copySymDenotation(initFlags = sym.flags | Method | Stable, info = sym.info.ensureMethodic)
.installAfter(thisTransformer)
val superAcc =
Super(This(currentClass), tpnme.EMPTY, inConstrCall = false).select(alias)