diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/DefaultArgumentsConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/DefaultArgumentsConversion.kt index 94db7824eea..ea877cd9198 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/DefaultArgumentsConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/DefaultArgumentsConversion.kt @@ -20,12 +20,9 @@ class DefaultArgumentsConversion(private val context: ConversionContext) : Recur checkMethod@ for (method in methods) { val block = method.block as? JKBlock ?: continue - val singleStatement = block.statements.singleOrNull() + val singleStatement = block.statements.singleOrNull() ?: continue - val call = - singleStatement.safeAs()?.expression?.safeAs() - ?: singleStatement.safeAs()?.expression?.safeAs() - ?: continue + val call = lookupCall(singleStatement) ?: continue val callee = call.identifier as? JKUniverseMethodSymbol ?: continue val calledMethod = callee.target if (calledMethod.parent != method.parent @@ -79,4 +76,20 @@ class DefaultArgumentsConversion(private val context: ConversionContext) : Recur } + private fun lookupCall(statement: JKStatement): JKMethodCallExpression? { + val expression = when (statement) { + is JKExpressionStatement -> statement.expression + is JKReturnStatement -> statement.expression + else -> null + } + return when (expression) { + is JKMethodCallExpression -> expression + is JKQualifiedExpression -> { + if (expression.receiver !is JKThisExpression) return null + expression.selector.safeAs() + } + else -> null + } + } + }