From ddcafdd9b34ccc82981ccb702d34bdd3fbac0879 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 21 Dec 2015 07:43:59 +0300 Subject: [PATCH] J2K: Avoid to convert to deprecated String methods, namely toByteArray. --- j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt | 12 ++++++++++-- .../methodCallExpression/stringMethods.kt | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt index 8c44f02efd2..aaede0df972 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt @@ -333,8 +333,16 @@ enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String }, STRING_GET_BYTES(JAVA_LANG_STRING, "getBytes", null) { - override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) - = MethodCallExpression.build(codeConverter.convertExpression(qualifier), "toByteArray", codeConverter.convertExpressions(arguments), emptyList(), false) + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter): MethodCallExpression { + val charsetArg = arguments.lastOrNull()?.check { it.type?.canonicalText == JAVA_LANG_STRING } + val convertedArguments = codeConverter.convertExpressions(arguments).map { + if (charsetArg != null && it.prototypes?.singleOrNull()?.element == charsetArg) + MethodCallExpression.buildNotNull(null, "charset", listOf(it)).assignNoPrototype() + else + it + } + return MethodCallExpression.build(codeConverter.convertExpression(qualifier), "toByteArray", convertedArguments, emptyList(), false) + } }, STRING_GET_CHARS(JAVA_LANG_STRING, "getChars", 4) { diff --git a/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt b/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt index 264324d928c..ad45d901c2e 100644 --- a/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt +++ b/j2k/testData/fileOrElement/methodCallExpression/stringMethods.kt @@ -84,7 +84,7 @@ internal class A { s.toByteArray() s.toByteArray(Charset.forName("utf-8")) - s.toByteArray("utf-8") + s.toByteArray(charset("utf-8")) val chars = CharArray(10) s.toCharArray(chars, 0, 1, 11)