New J2K: Fixed modifiers conversion, expression test now can pass.
This commit is contained in:
@@ -192,7 +192,7 @@ class NewCodeBuilder {
|
|||||||
val type = typeElement.type
|
val type = typeElement.type
|
||||||
when (type) {
|
when (type) {
|
||||||
is JKClassType -> if ((type.classReference as? JKClassSymbol)?.fqName != "kotlin.Unit") {
|
is JKClassType -> if ((type.classReference as? JKClassSymbol)?.fqName != "kotlin.Unit") {
|
||||||
(type.classReference as JKClassSymbol).fqName?.let { printer.printWithNoIndent(": " + FqName(it).shortName().asString()) }
|
(type.classReference as JKClassSymbol).fqName?.let { printer.printWithNoIndent(":" + FqName(it).shortName().asString()) }
|
||||||
}
|
}
|
||||||
else -> printer.printWithNoIndent(":Unit /* TODO: ${type::class} */")
|
else -> printer.printWithNoIndent(":Unit /* TODO: ${type::class} */")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,15 +11,23 @@ import org.jetbrains.kotlin.j2k.tree.impl.JKKtModifierImpl
|
|||||||
class ModifiersConversion : RecursiveApplicableConversionBase() {
|
class ModifiersConversion : RecursiveApplicableConversionBase() {
|
||||||
|
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
return if (element is JKModifierList) element.also {
|
return if (element is JKModifierListOwner && element !is JKLocalVariable)
|
||||||
if (element.parent !is JKLocalVariable && !it.modifiers.filter { it is JKJavaAccessModifier }.any()) {
|
element.also {
|
||||||
it.modifiers += JKKtModifierImpl(JKKtModifier.KtModifierType.INTERNAL)
|
var modifiers = it.modifierList.modifiers
|
||||||
}
|
if (element !is JKField) {
|
||||||
it.modifiers = mapModifiers(it.modifiers)
|
if (!modifiers.any { it is JKJavaModifier && it.type == JKJavaModifier.JavaModifierType.FINAL }) {
|
||||||
} else recurse(element)
|
modifiers += JKKtModifierImpl(JKKtModifier.KtModifierType.OPEN)
|
||||||
|
}
|
||||||
|
modifiers = mapOtherModifiers(modifiers)
|
||||||
|
}
|
||||||
|
if (!modifiers.any { it is JKJavaAccessModifier }) {
|
||||||
|
modifiers += JKKtModifierImpl(JKKtModifier.KtModifierType.INTERNAL)
|
||||||
|
}
|
||||||
|
it.modifierList.modifiers = mapAccessModifiers(modifiers)
|
||||||
|
} else recurse(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun mapModifiers(modifiers: List<JKModifier>): List<JKModifier> {
|
private fun mapAccessModifiers(modifiers: List<JKModifier>): List<JKModifier> {
|
||||||
return modifiers.mapNotNull {
|
return modifiers.mapNotNull {
|
||||||
when (it) {
|
when (it) {
|
||||||
is JKJavaAccessModifier -> when (it.type) {
|
is JKJavaAccessModifier -> when (it.type) {
|
||||||
@@ -27,6 +35,15 @@ class ModifiersConversion : RecursiveApplicableConversionBase() {
|
|||||||
JKJavaAccessModifier.AccessModifierType.PRIVATE -> JKKtModifierImpl(JKKtModifier.KtModifierType.PRIVATE)
|
JKJavaAccessModifier.AccessModifierType.PRIVATE -> JKKtModifierImpl(JKKtModifier.KtModifierType.PRIVATE)
|
||||||
JKJavaAccessModifier.AccessModifierType.PROTECTED -> JKKtModifierImpl(JKKtModifier.KtModifierType.PROTECTED)
|
JKJavaAccessModifier.AccessModifierType.PROTECTED -> JKKtModifierImpl(JKKtModifier.KtModifierType.PROTECTED)
|
||||||
}
|
}
|
||||||
|
else -> it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun mapOtherModifiers(modifiers: List<JKModifier>): List<JKModifier> {
|
||||||
|
return modifiers.mapNotNull {
|
||||||
|
when (it) {
|
||||||
is JKJavaModifier -> when (it.type) {
|
is JKJavaModifier -> when (it.type) {
|
||||||
JKJavaModifier.JavaModifierType.ABSTRACT -> JKKtModifierImpl(JKKtModifier.KtModifierType.ABSTRACT)
|
JKJavaModifier.JavaModifierType.ABSTRACT -> JKKtModifierImpl(JKKtModifier.KtModifierType.ABSTRACT)
|
||||||
JKJavaModifier.JavaModifierType.FINAL -> null
|
JKJavaModifier.JavaModifierType.FINAL -> null
|
||||||
|
|||||||
Reference in New Issue
Block a user