New J2K: Support 'override' modality

This commit is contained in:
Simon Ogorodnik
2018-08-27 21:05:47 +03:00
committed by Ilya Kirillov
parent dcffb60dc9
commit 3dbdb2b64d
4 changed files with 14 additions and 6 deletions
@@ -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)
}
}
@@ -82,6 +82,7 @@ class NewCodeBuilder {
JKModalityModifier.Modality.OPEN -> "open"
JKModalityModifier.Modality.FINAL -> "final"
JKModalityModifier.Modality.ABSTRACT -> "abstract"
JKModalityModifier.Modality.OVERRIDE -> "override"
}
)
}
@@ -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
}
}
}
@@ -86,7 +86,7 @@ interface JKAccessModifier : JKModifier {
interface JKModalityModifier : JKModifier {
enum class Modality {
OPEN, FINAL, ABSTRACT
OPEN, FINAL, ABSTRACT, OVERRIDE
}
val modality: Modality