diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 3eaba2cc32b..faf4f1863e2 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -294,6 +294,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { parameterList.parameters.map { it.toJK() }, body?.toJK() ?: JKBodyStub ).also { + backAnnotation[it] = this symbolProvider.provideUniverseSymbol(this, it) } } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 8c9ba37fb38..66e0e03ca8b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -82,6 +82,7 @@ class NewCodeBuilder { JKModalityModifier.Modality.OPEN -> "open" JKModalityModifier.Modality.FINAL -> "final" JKModalityModifier.Modality.ABSTRACT -> "abstract" + JKModalityModifier.Modality.OVERRIDE -> "override" } ) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt index 3ccd381bf33..3ef026db9dc 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ModalityConversion.kt @@ -6,18 +6,18 @@ package org.jetbrains.kotlin.j2k.conversions import com.intellij.psi.PsiClass +import com.intellij.psi.PsiMethod import org.jetbrains.kotlin.j2k.ConversionContext -import org.jetbrains.kotlin.j2k.tree.JKClass -import org.jetbrains.kotlin.j2k.tree.JKModalityModifier -import org.jetbrains.kotlin.j2k.tree.JKTreeElement +import org.jetbrains.kotlin.j2k.tree.* import org.jetbrains.kotlin.j2k.tree.impl.modality class ModalityConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() { override fun applyToElement(element: JKTreeElement): JKTreeElement { - if (element is JKClass) { - processClass(element) + when (element) { + is JKClass -> processClass(element) + is JKJavaMethod -> processMethod(element) } return recurse(element) } @@ -31,4 +31,10 @@ class ModalityConversion(private val context: ConversionContext) : RecursiveAppl } } + private fun processMethod(method: JKJavaMethod) { + if ((context.backAnnotator(method)!! as PsiMethod).findSuperMethods().isNotEmpty()) { + method.modifierList.modality = JKModalityModifier.Modality.OVERRIDE + } + } + } \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 397ddf3b143..4e822786fe1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -86,7 +86,7 @@ interface JKAccessModifier : JKModifier { interface JKModalityModifier : JKModifier { enum class Modality { - OPEN, FINAL, ABSTRACT + OPEN, FINAL, ABSTRACT, OVERRIDE } val modality: Modality