diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2015-05-27 20:41:41 +0200 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2015-05-28 02:28:27 +0200 |
commit | beba9703e6a8cfd9d0f541c6a75125cef9eff726 (patch) | |
tree | ec9a59ad7d78a6c3d62c4be10eedd84e3773acfd /src | |
parent | c0b693060c666f66cc5f26462e95f74b68975f31 (diff) | |
download | dotty-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.scala | 4 |
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) |