From a529dcce4c3da54e34a234e6870046237d6dba3b Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 24 Dec 2018 12:14:51 +0300 Subject: [PATCH] New J2K: Add charAt conversion to StringMethodsConversion --- .../j2k/conversions/StringMethodsConversion.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StringMethodsConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StringMethodsConversion.kt index e25b0a9e5ee..a640f4ccf06 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StringMethodsConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StringMethodsConversion.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.j2k.conversions import org.jetbrains.kotlin.j2k.ConversionContext import org.jetbrains.kotlin.j2k.tree.* import org.jetbrains.kotlin.j2k.tree.impl.JKFieldAccessExpressionImpl +import org.jetbrains.kotlin.j2k.tree.impl.JKKtCallExpressionImpl class StringMethodsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() { @@ -20,6 +21,10 @@ class StringMethodsConversion(private val context: ConversionContext) : Recursiv element.selector = it } + convertCharAtCall(element.selector)?.also { + element.selector = it + } + return recurse(element) } @@ -29,4 +34,14 @@ class StringMethodsConversion(private val context: ConversionContext) : Recursiv JKFieldAccessExpressionImpl(context.symbolProvider.provideByFqName("kotlin.String.length")) } else null } + + private fun convertCharAtCall(selector: JKExpression): JKExpression? { + if (selector !is JKMethodCallExpression) return null + return if (selector.identifier.name == "charAt") { + JKKtCallExpressionImpl( + context.symbolProvider.provideByFqName("kotlin.String.get"), + selector::arguments.detached() + ) + } else null + } } \ No newline at end of file