diff options
author | Dmitry Petrashko <dark@d-d.me> | 2016-12-12 10:14:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-12 10:14:26 +0100 |
commit | 7775aab98ce98151d198e88bb676158f58f0cf57 (patch) | |
tree | cf42ecbf3f48283c6f34ba0d4a29c44edcd1851f /compiler | |
parent | 740ccf85dbb67e01b9ff27f26542ecf95e874a13 (diff) | |
parent | 0d266ab909136c0bead951709a29958fede43408 (diff) | |
download | dotty-7775aab98ce98151d198e88bb676158f58f0cf57.tar.gz dotty-7775aab98ce98151d198e88bb676158f58f0cf57.tar.bz2 dotty-7775aab98ce98151d198e88bb676158f58f0cf57.zip |
Merge pull request #1781 from dotty-staging/fix-#1776
Fix #1776: Avoid interaction between parameter forwarding and elimByName
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/src/dotty/tools/dotc/transform/ParamForwarding.scala | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/ParamForwarding.scala b/compiler/src/dotty/tools/dotc/transform/ParamForwarding.scala index 9571c387b..a72e10681 100644 --- a/compiler/src/dotty/tools/dotc/transform/ParamForwarding.scala +++ b/compiler/src/dotty/tools/dotc/transform/ParamForwarding.scala @@ -55,7 +55,9 @@ class ParamForwarding(thisTransformer: DenotTransformer) { stat match { case stat: ValDef => val sym = stat.symbol.asTerm - if (sym is (ParamAccessor, butNot = Mutable)) { + if (sym.is(ParamAccessor, butNot = Mutable) && !sym.info.isInstanceOf[ExprType]) { + // ElimByName gets confused with methods returning an ExprType, + // so avoid param forwarding if parameter is by name. See i1766.scala val idx = superArgs.indexWhere(_.symbol == sym) if (idx >= 0 && superParamNames(idx) == stat.name) { // supercall to like-named parameter val alias = inheritedAccessor(sym) |