diff --git a/j2k/src/org/jetbrains/jet/j2k/Converter.kt b/j2k/src/org/jetbrains/jet/j2k/Converter.kt index 1589d1bcf8f..35af58897aa 100644 --- a/j2k/src/org/jetbrains/jet/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/Converter.kt @@ -258,17 +258,25 @@ public class Converter(val project: Project, val settings: ConverterSettings) { val returnType = convertType(method.getReturnType(), method.isAnnotatedAsNotNull()) val modifiers = HashSet(convertModifierList(method.getModifierList())) - if (isOverride(method)) { - modifiers.add(Modifier.OVERRIDE) - } val containingClass = method.getContainingClass() if (containingClass != null && containingClass.isInterface()) { modifiers.remove(Modifier.ABSTRACT) } + if (containingClass != null && (containingClass.hasModifierProperty(PsiModifier.FINAL) || containingClass.isEnum())) { + modifiers.add(Modifier.FINAL) + } - if (isNotOpenMethod(method)) { - modifiers.add(Modifier.NOT_OPEN) + if (settings.openByDefault && + !modifiers.contains(Modifier.ABSTRACT) && + !modifiers.contains(Modifier.FINAL) && + !modifiers.contains(Modifier.PRIVATE)) { + modifiers.add(Modifier.OPEN) + } + + if (isOverride(method)) { + modifiers.add(Modifier.OVERRIDE) + modifiers.remove(Modifier.OPEN) } val comments = getComments(method) diff --git a/j2k/src/org/jetbrains/jet/j2k/MethodUtils.kt b/j2k/src/org/jetbrains/jet/j2k/MethodUtils.kt index 3784c0a65de..f5c0f303b3f 100644 --- a/j2k/src/org/jetbrains/jet/j2k/MethodUtils.kt +++ b/j2k/src/org/jetbrains/jet/j2k/MethodUtils.kt @@ -55,17 +55,6 @@ fun Converter.isOverride(method: PsiMethod): Boolean { return false } -fun isNotOpenMethod(method: PsiMethod): Boolean { - val parent = method.getParent() - if (parent is PsiClass) { - val parentModifierList = parent.getModifierList() - if ((parentModifierList != null && parentModifierList.hasExplicitModifier(PsiModifier.FINAL)) || parent.isEnum()) { - return true - } - } - return false -} - fun directlyOverridesMethodFromObject(method: PsiMethod): Boolean { var superSignatures = method.getHierarchicalMethodSignature().getSuperSignatures() if (superSignatures.size() == 1) { diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt index a00b35250d2..b99f5884393 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt @@ -46,18 +46,10 @@ open class Function( resultingModifiers.add(Modifier.ABSTRACT) } - if (converter.settings.openByDefault && - !modifiers.contains(Modifier.ABSTRACT) && - !isOverride && - !modifiers.contains(Modifier.FINAL) && - !modifiers.contains(Modifier.PRIVATE)) { + if (modifiers.contains(Modifier.OPEN)) { resultingModifiers.add(Modifier.OPEN) } - if (modifiers.contains(Modifier.NOT_OPEN)) { - resultingModifiers.remove(Modifier.OPEN) - } - return resultingModifiers.toKotlin() } diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt index c2ef0d89d99..4fb6cab8f80 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt @@ -30,13 +30,11 @@ enum class Modifier(val name: String) { ABSTRACT: Modifier("abstract") FINAL: Modifier("final") OPEN: Modifier("open") - NOT_OPEN: Modifier("not open") //TODO: drop it OVERRIDE: Modifier("override") public fun toKotlin(): String? { return when(this) { INTERNAL -> null - NOT_OPEN -> throw IllegalArgumentException() else -> name } }