New J2K: preserve comments in BuiltinMembersConversion

This commit is contained in:
Ilya Kirillov
2019-05-29 13:53:27 +03:00
parent ceecbfdcea
commit eed55a11ca
@@ -27,6 +27,14 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
val conversion = selector.getConversion() ?: return null
val newSelector = conversion.createBuilder().build(selector)
if (this is JKQualifiedExpression && conversion.replaceType == ReplaceType.REPLACE_WITH_QUALIFIER) {
newSelector.rightNonCodeElements =
(receiver.leftNonCodeElements +
receiver.rightNonCodeElements +
selector.leftNonCodeElements +
selector.rightNonCodeElements).dropSpaceesAtBegining()
}
return when (conversion.replaceType) {
ReplaceType.REPLACE_SELECTOR -> {
if (this is JKQualifiedExpression) {
@@ -34,7 +42,7 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
this
} else newSelector
}
ReplaceType.FULL_REPLACE -> newSelector
ReplaceType.REPLACE_WITH_QUALIFIER -> newSelector
}.let { expression ->
conversion.actionAfter?.invoke(expression.copyTreeAndDetach()) ?: expression
}
@@ -139,7 +147,7 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
private enum class ReplaceType {
REPLACE_SELECTOR, FULL_REPLACE
REPLACE_SELECTOR, REPLACE_WITH_QUALIFIER
}
@@ -183,14 +191,15 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
private val conversions: Map<String, List<Conversion>> =
listOf(
Method("java.lang.Integer.intValue") convertTo Method("kotlin.Int.toInt"),//TODO do not list all variants
Method("java.lang.Short.valueOf") convertTo ExtensionMethod("kotlin.Short.toShort")
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.io.PrintStream.println") convertTo Method("kotlin.io.println")
withReplaceType ReplaceType.FULL_REPLACE
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withFilter ::isSystemOutCall,
Method("java.io.PrintStream.print") convertTo Method("kotlin.io.print")
withReplaceType ReplaceType.FULL_REPLACE
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withFilter ::isSystemOutCall,
Method("java.lang.Object.getClass") convertTo Field("kotlin.jvm.javaClass"),
@@ -229,17 +238,17 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
Method("java.lang.String.getBytes") convertTo Method("kotlin.text.toByteArray"),
Method("java.lang.String.valueOf")
convertTo ExtensionMethod("kotlin.Any.toString")
withReplaceType ReplaceType.FULL_REPLACE
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == false },
Method("java.lang.String.valueOf")
convertTo Method("kotlin.String")
withReplaceType ReplaceType.FULL_REPLACE
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == true },
Method("java.lang.String.copyValueOf")
convertTo Method("kotlin.String")
withReplaceType ReplaceType.FULL_REPLACE
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == true },
Method("java.lang.String.replaceAll")
@@ -316,7 +325,7 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
KtTokens.PLUS,
context.symbolProvider
)
} withReplaceType ReplaceType.FULL_REPLACE,
} withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.lang.String.split")
convertTo Method("kotlin.text.split")
@@ -395,15 +404,15 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
Method("java.util.Collections.singletonList") convertTo Method("kotlin.collections.listOf")
withReplaceType ReplaceType.FULL_REPLACE,
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.util.Collections.singleton") convertTo Method("kotlin.collections.setOf")
withReplaceType ReplaceType.FULL_REPLACE,
withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.util.Collections.emptyList")
convertTo Method("kotlin.collections.emptyList") withReplaceType ReplaceType.FULL_REPLACE,
convertTo Method("kotlin.collections.emptyList") withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.util.Collections.emptySet")
convertTo Method("kotlin.collections.emptySet") withReplaceType ReplaceType.FULL_REPLACE,
convertTo Method("kotlin.collections.emptySet") withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.util.Collections.emptyMap")
convertTo Method("kotlin.collections.emptyMap") withReplaceType ReplaceType.FULL_REPLACE
convertTo Method("kotlin.collections.emptyMap") withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
).groupBy { it.from.fqName }