New J2K: do not recreate typeElement on updating type

This commit is contained in:
Ilya Kirillov
2019-09-03 14:15:39 +03:00
parent f61bb5aa39
commit eb690f451e
2 changed files with 6 additions and 7 deletions
@@ -23,14 +23,13 @@ import org.jetbrains.kotlin.nj2k.tree.impl.*
class TypeMappingConversion(val context: NewJ2kConverterContext) : RecursiveApplicableConversionBase() {
override fun applyToElement(element: JKTreeElement): JKTreeElement {
return when (element) {
when (element) {
is JKTypeElement -> {
val newType = element.type.mapType(element)
JKTypeElementImpl(newType).withNonCodeElementsFrom(element)
element.type = element.type.mapType(element)
}
is JKJavaNewExpression -> {
val newClassSymbol = element.classSymbol.mapClassSymbol(null)
recurse(
return recurse(
JKJavaNewExpressionImpl(
newClassSymbol,
element::arguments.detached(),
@@ -39,8 +38,8 @@ class TypeMappingConversion(val context: NewJ2kConverterContext) : RecursiveAppl
).withNonCodeElementsFrom(element)
)
}
else -> recurse(element)
}
return recurse(element)
}
private fun JKTypeArgumentList.fixTypeArguments(classSymbol: JKClassSymbol): JKTypeArgumentList {
@@ -256,7 +256,7 @@ fun JKModifiersListOwner.modifierElements(): List<JKModifierElement> =
interface JKTypeElement : JKTreeElement {
val type: JKType
var type: JKType
}
abstract class JKStatement : JKTreeElement, JKBranchElementBase() {
@@ -322,7 +322,7 @@ interface JKQualifiedExpression : JKExpression, JKAssignableExpression {
}
interface JKTypeArgumentList : JKTreeElement {
val typeArguments: List<JKTypeElement>
var typeArguments: List<JKTypeElement>
}
interface JKTypeArgumentListOwner : JKTreeElement {