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
|
||||
when (type) {
|
||||
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} */")
|
||||
}
|
||||
|
||||
@@ -11,15 +11,23 @@ import org.jetbrains.kotlin.j2k.tree.impl.JKKtModifierImpl
|
||||
class ModifiersConversion : RecursiveApplicableConversionBase() {
|
||||
|
||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||
return if (element is JKModifierList) element.also {
|
||||
if (element.parent !is JKLocalVariable && !it.modifiers.filter { it is JKJavaAccessModifier }.any()) {
|
||||
it.modifiers += JKKtModifierImpl(JKKtModifier.KtModifierType.INTERNAL)
|
||||
}
|
||||
it.modifiers = mapModifiers(it.modifiers)
|
||||
} else recurse(element)
|
||||
return if (element is JKModifierListOwner && element !is JKLocalVariable)
|
||||
element.also {
|
||||
var modifiers = it.modifierList.modifiers
|
||||
if (element !is JKField) {
|
||||
if (!modifiers.any { it is JKJavaModifier && it.type == JKJavaModifier.JavaModifierType.FINAL }) {
|
||||
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 {
|
||||
when (it) {
|
||||
is JKJavaAccessModifier -> when (it.type) {
|
||||
@@ -27,6 +35,15 @@ class ModifiersConversion : RecursiveApplicableConversionBase() {
|
||||
JKJavaAccessModifier.AccessModifierType.PRIVATE -> JKKtModifierImpl(JKKtModifier.KtModifierType.PRIVATE)
|
||||
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) {
|
||||
JKJavaModifier.JavaModifierType.ABSTRACT -> JKKtModifierImpl(JKKtModifier.KtModifierType.ABSTRACT)
|
||||
JKJavaModifier.JavaModifierType.FINAL -> null
|
||||
|
||||
Reference in New Issue
Block a user