New J2K: Add charAt conversion to StringMethodsConversion

This commit is contained in:
Ilya Kirillov
2018-12-24 12:14:51 +03:00
committed by Ilya Kirillov
parent 7dbe16d305
commit a529dcce4c
@@ -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
}
}