File tree Expand file tree Collapse file tree 1 file changed +8
-7
lines changed
compiler/src/dotty/tools/dotc/transform Expand file tree Collapse file tree 1 file changed +8
-7
lines changed Original file line number Diff line number Diff line change @@ -67,13 +67,14 @@ class ParamForwarding(thisTransformer: DenotTransformer) {
67
67
def forwarder (implicit ctx : Context ) = {
68
68
sym.copySymDenotation(initFlags = sym.flags | Method | Stable , info = sym.info.ensureMethodic)
69
69
.installAfter(thisTransformer)
70
- val superAcc =
71
- Super (This (currentClass), tpnme.EMPTY , inConstrCall = false )
72
- .select(alias)
73
- val stpe @ TermRef (_, _) = superAcc.tpe
74
- val superAccShadowed = superAcc.withType(stpe.shadowed)
75
- typr.println(i " adding param forwarder $superAccShadowed" )
76
- DefDef (sym, superAccShadowed.ensureConforms(sym.info.widen))
70
+ var superAcc =
71
+ Super (This (currentClass), tpnme.EMPTY , inConstrCall = false ).select(alias)
72
+ if (alias.owner != currentClass.superClass)
73
+ // need to use shadowed in order not to accidentally address an
74
+ // intervening private forwarder in the superclass
75
+ superAcc = superAcc.withType(superAcc.tpe.asInstanceOf [TermRef ].shadowed)
76
+ typr.println(i " adding param forwarder $superAcc" )
77
+ DefDef (sym, superAcc.ensureConforms(sym.info.widen))
77
78
}
78
79
return forwarder(ctx.withPhase(thisTransformer.next))
79
80
}
You can’t perform that action at this time.
0 commit comments