diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 95acbecfe64..7907d5a1b4c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -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} */") } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt index 84b284e5eb2..7609fd37331 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt @@ -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): List { + private fun mapAccessModifiers(modifiers: List): List { 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): List { + return modifiers.mapNotNull { + when (it) { is JKJavaModifier -> when (it.type) { JKJavaModifier.JavaModifierType.ABSTRACT -> JKKtModifierImpl(JKKtModifier.KtModifierType.ABSTRACT) JKJavaModifier.JavaModifierType.FINAL -> null