New J2K: Support this qualifier in default arguments converter

This commit is contained in:
Simon Ogorodnik
2018-08-17 21:35:46 +03:00
committed by Ilya Kirillov
parent b868214992
commit 38760a8b7c
@@ -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<JKExpressionStatement>()?.expression?.safeAs<JKMethodCallExpression>()
?: singleStatement.safeAs<JKReturnStatement>()?.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
}
}
}