New J2K: Support 'override' modality
This commit is contained in:
committed by
Ilya Kirillov
parent
dcffb60dc9
commit
3dbdb2b64d
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user