diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt index 9466e210d96..94b6d1d1216 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModifiersConversion.kt @@ -5,20 +5,38 @@ package org.jetbrains.kotlin.j2k.conversions +import org.jetbrains.kotlin.j2k.ConversionContext import org.jetbrains.kotlin.j2k.tree.* import org.jetbrains.kotlin.j2k.tree.impl.JKKtModifierImpl +import org.jetbrains.kotlin.j2k.tree.impl.visibility -class ModifiersConversion : RecursiveApplicableConversionBase() { +class ModifiersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() { override fun applyToElement(element: JKTreeElement): JKTreeElement { - return if (element is JKModifierListOwner && element !is JKLocalVariable) - element.also { - var modifiers = it.modifierList.modifiers - if (element !is JKField) { - modifiers = mapOtherModifiers(modifiers) - } - it.modifierList.modifiers = modifiers - } else recurse(element) + if (element is JKModifierListOwner && element !is JKLocalVariable) { + var modifiers = element.modifierList.modifiers + if (element !is JKField) { + modifiers = mapOtherModifiers(modifiers) + } + element.modifierList.modifiers = modifiers + // Is declared inside some class + // TODO: Cleanup + if (context.converter.settings.noInternalForMembersOfInternal) { + relaxVisibility(element) + } + } + return recurse(element) + } + + private fun relaxVisibility(element: JKTreeElement) { + if (element is JKParameter) return + element as JKModifierListOwner // TODO: Assert + val modifierList = element.modifierList + val parent = element.parent as? JKClass + if (parent == null + || modifierList.visibility != JKAccessModifier.Visibility.PACKAGE_PRIVATE + || parent.modifierList.visibility != JKAccessModifier.Visibility.PACKAGE_PRIVATE) return + modifierList.visibility = JKAccessModifier.Visibility.PUBLIC } private fun mapOtherModifiers(modifiers: List): List { diff --git a/j2k/src/org/jetbrains/kotlin/j2k/ConverterSettings.kt b/j2k/src/org/jetbrains/kotlin/j2k/ConverterSettings.kt index b694a9e0191..e6a6a7811f7 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/ConverterSettings.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/ConverterSettings.kt @@ -20,7 +20,8 @@ data class ConverterSettings( var forceNotNullTypes: Boolean, var specifyLocalVariableTypeByDefault: Boolean, var specifyFieldTypeByDefault: Boolean, - var openByDefault: Boolean + var openByDefault: Boolean, + var noInternalForMembersOfInternal: Boolean ) { companion object { @@ -28,7 +29,8 @@ data class ConverterSettings( forceNotNullTypes = true, specifyLocalVariableTypeByDefault = false, specifyFieldTypeByDefault = false, - openByDefault = false + openByDefault = false, + noInternalForMembersOfInternal = true ) } }