J2K: Fix incorrect argument remapping when introducing defaults

This commit is contained in:
Simon Ogorodnik
2020-07-17 23:01:48 +03:00
parent cd7ac55091
commit 8c2dd876b5
@@ -105,14 +105,13 @@ class DefaultArgumentsConversion(context: NewJ2kConverterContext) : RecursiveApp
&& declarations.any { it == this.target } && declarations.any { it == this.target }
} }
for ((defaultValue, parameter) in defaults) {
fun remapParameterSymbol(on: JKTreeElement): JKTreeElement { fun remapParameterSymbol(on: JKTreeElement): JKTreeElement {
if (on is JKQualifiedExpression && on.receiver is JKThisExpression) { if (on is JKQualifiedExpression && on.receiver is JKThisExpression) {
return on return on
} }
if (on is JKFieldAccessExpression) { if (on is JKFieldAccessExpression) {
val target = on.identifier.target val target = on.identifier.target
if (target is JKParameter) { if (target is JKParameter && target.parent == method) {
val newSymbol = val newSymbol =
symbolProvider.provideUniverseSymbol(calledMethod.parameters[method.parameters.indexOf(target)]) symbolProvider.provideUniverseSymbol(calledMethod.parameters[method.parameters.indexOf(target)])
return JKFieldAccessExpression(newSymbol) return JKFieldAccessExpression(newSymbol)
@@ -126,6 +125,8 @@ class DefaultArgumentsConversion(context: NewJ2kConverterContext) : RecursiveApp
} }
return applyRecursive(on, ::remapParameterSymbol) return applyRecursive(on, ::remapParameterSymbol)
} }
for ((defaultValue, parameter) in defaults) {
parameter.initializer = remapParameterSymbol(defaultValue) as JKExpression parameter.initializer = remapParameterSymbol(defaultValue) as JKExpression
} }
element.declarations -= method element.declarations -= method