New J2K: Add charAt conversion to StringMethodsConversion
This commit is contained in:
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.ConversionContext
|
||||||
import org.jetbrains.kotlin.j2k.tree.*
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldAccessExpressionImpl
|
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldAccessExpressionImpl
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.impl.JKKtCallExpressionImpl
|
||||||
|
|
||||||
|
|
||||||
class StringMethodsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class StringMethodsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||||
@@ -20,6 +21,10 @@ class StringMethodsConversion(private val context: ConversionContext) : Recursiv
|
|||||||
element.selector = it
|
element.selector = it
|
||||||
}
|
}
|
||||||
|
|
||||||
|
convertCharAtCall(element.selector)?.also {
|
||||||
|
element.selector = it
|
||||||
|
}
|
||||||
|
|
||||||
return recurse(element)
|
return recurse(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,4 +34,14 @@ class StringMethodsConversion(private val context: ConversionContext) : Recursiv
|
|||||||
JKFieldAccessExpressionImpl(context.symbolProvider.provideByFqName("kotlin.String.length"))
|
JKFieldAccessExpressionImpl(context.symbolProvider.provideByFqName("kotlin.String.length"))
|
||||||
} else null
|
} 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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user