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 conversion = selector.getConversion() ?: return null
val newSelector = conversion.createBuilder().build(selector) 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) { return when (conversion.replaceType) {
ReplaceType.REPLACE_SELECTOR -> { ReplaceType.REPLACE_SELECTOR -> {
if (this is JKQualifiedExpression) { if (this is JKQualifiedExpression) {
@@ -34,7 +42,7 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
this this
} else newSelector } else newSelector
} }
ReplaceType.FULL_REPLACE -> newSelector ReplaceType.REPLACE_WITH_QUALIFIER -> newSelector
}.let { expression -> }.let { expression ->
conversion.actionAfter?.invoke(expression.copyTreeAndDetach()) ?: expression conversion.actionAfter?.invoke(expression.copyTreeAndDetach()) ?: expression
} }
@@ -139,7 +147,7 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
private enum class ReplaceType { 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>> = private val conversions: Map<String, List<Conversion>> =
listOf( 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") Method("java.io.PrintStream.println") convertTo Method("kotlin.io.println")
withReplaceType ReplaceType.FULL_REPLACE withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withFilter ::isSystemOutCall, withFilter ::isSystemOutCall,
Method("java.io.PrintStream.print") convertTo Method("kotlin.io.print") Method("java.io.PrintStream.print") convertTo Method("kotlin.io.print")
withReplaceType ReplaceType.FULL_REPLACE withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withFilter ::isSystemOutCall, withFilter ::isSystemOutCall,
Method("java.lang.Object.getClass") convertTo Field("kotlin.jvm.javaClass"), 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.getBytes") convertTo Method("kotlin.text.toByteArray"),
Method("java.lang.String.valueOf") Method("java.lang.String.valueOf")
convertTo ExtensionMethod("kotlin.Any.toString") convertTo ExtensionMethod("kotlin.Any.toString")
withReplaceType ReplaceType.FULL_REPLACE withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == false }, withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == false },
Method("java.lang.String.valueOf") Method("java.lang.String.valueOf")
convertTo Method("kotlin.String") convertTo Method("kotlin.String")
withReplaceType ReplaceType.FULL_REPLACE withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == true }, withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == true },
Method("java.lang.String.copyValueOf") Method("java.lang.String.copyValueOf")
convertTo Method("kotlin.String") convertTo Method("kotlin.String")
withReplaceType ReplaceType.FULL_REPLACE withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER
withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == true }, withByArgumentsFilter { it.isNotEmpty() && it.first().type(context.symbolProvider)?.isArrayType() == true },
Method("java.lang.String.replaceAll") Method("java.lang.String.replaceAll")
@@ -316,7 +325,7 @@ class BuiltinMembersConversion(private val context: NewJ2kConverterContext) : Re
KtTokens.PLUS, KtTokens.PLUS,
context.symbolProvider context.symbolProvider
) )
} withReplaceType ReplaceType.FULL_REPLACE, } withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.lang.String.split") Method("java.lang.String.split")
convertTo Method("kotlin.text.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") 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") Method("java.util.Collections.singleton") convertTo Method("kotlin.collections.setOf")
withReplaceType ReplaceType.FULL_REPLACE, withReplaceType ReplaceType.REPLACE_WITH_QUALIFIER,
Method("java.util.Collections.emptyList") 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") 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") 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 } ).groupBy { it.from.fqName }