From 18e5c1b5f29c76dc8bc3d402bb8eff8ddbc4ed72 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 28 Jan 2019 14:08:54 +0300 Subject: [PATCH] New J2K: Fix modality conversion --- .../j2k/conversions/EnumClassConversion.kt | 19 ----------- .../j2k/conversions/ModalityConversion.kt | 34 ++++++++++++------- 2 files changed, 21 insertions(+), 32 deletions(-) delete mode 100644 j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/EnumClassConversion.kt diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/EnumClassConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/EnumClassConversion.kt deleted file mode 100644 index 13b36fdff80..00000000000 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/EnumClassConversion.kt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.j2k.conversions - -import org.jetbrains.kotlin.j2k.tree.* -import org.jetbrains.kotlin.j2k.tree.impl.JKExpressionStatementImpl -import org.jetbrains.kotlin.j2k.tree.impl.JKKtThrowExpressionImpl - - -class EnumClassConversion : RecursiveApplicableConversionBase() { - override fun applyToElement(element: JKTreeElement): JKTreeElement { - if (element !is JKClass || element.classKind != JKClass.ClassKind.ENUM) return recurse(element) - element.modality = Modality.FINAL - return recurse(element) - } -} \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt index e92fa831307..5ac5b7a41f7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt @@ -21,24 +21,32 @@ class ModalityConversion(private val context: ConversionContext) : RecursiveAppl } private fun processClass(klass: JKClass) { - if (klass.classKind != JKClass.ClassKind.CLASS) return - if (klass.modality != Modality.OPEN) return - if (context.converter.settings.openByDefault) return - if (!context.converter.converterServices.oldServices.referenceSearcher.hasInheritors(klass.psi as PsiClass)) { - klass.modality = Modality.FINAL + klass.modality = when { + klass.classKind == JKClass.ClassKind.ENUM -> Modality.FINAL + klass.modality == Modality.OPEN + && context.converter.settings.openByDefault -> Modality.OPEN + klass.modality == Modality.OPEN + && context.converter.settings.openByDefault -> Modality.OPEN + klass.modality == Modality.OPEN + && !context.converter.converterServices.oldServices.referenceSearcher.hasInheritors(klass.psi as PsiClass) -> + Modality.FINAL + + else -> klass.modality } } private fun processMethod(method: JKJavaMethod) { val psi = method.psi()!! - if (method.modality == Modality.OPEN - && !context.converter.converterServices.oldServices.referenceSearcher.hasOverrides(psi) - ) { - method.modality = Modality.FINAL - } - if ((method.psi!! as PsiMethod).findSuperMethods().isNotEmpty()) { - method.modality = Modality.OVERRIDE + method.modality = when { + method.modality != Modality.ABSTRACT + && (method.psi!! as PsiMethod).findSuperMethods().isNotEmpty() -> Modality.OVERRIDE + method.modality == Modality.OPEN + && context.converter.settings.openByDefault + && method.visibility != Visibility.PRIVATE -> Modality.OPEN + + method.modality == Modality.OPEN + && !context.converter.converterServices.oldServices.referenceSearcher.hasOverrides(psi) -> Modality.FINAL + else -> method.modality } } - } \ No newline at end of file