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() },
|
parameterList.parameters.map { it.toJK() },
|
||||||
body?.toJK() ?: JKBodyStub
|
body?.toJK() ?: JKBodyStub
|
||||||
).also {
|
).also {
|
||||||
|
backAnnotation[it] = this
|
||||||
symbolProvider.provideUniverseSymbol(this, it)
|
symbolProvider.provideUniverseSymbol(this, it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ class NewCodeBuilder {
|
|||||||
JKModalityModifier.Modality.OPEN -> "open"
|
JKModalityModifier.Modality.OPEN -> "open"
|
||||||
JKModalityModifier.Modality.FINAL -> "final"
|
JKModalityModifier.Modality.FINAL -> "final"
|
||||||
JKModalityModifier.Modality.ABSTRACT -> "abstract"
|
JKModalityModifier.Modality.ABSTRACT -> "abstract"
|
||||||
|
JKModalityModifier.Modality.OVERRIDE -> "override"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,18 +6,18 @@
|
|||||||
package org.jetbrains.kotlin.j2k.conversions
|
package org.jetbrains.kotlin.j2k.conversions
|
||||||
|
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
|
import com.intellij.psi.PsiMethod
|
||||||
import org.jetbrains.kotlin.j2k.ConversionContext
|
import org.jetbrains.kotlin.j2k.ConversionContext
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKClass
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKModalityModifier
|
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.modality
|
import org.jetbrains.kotlin.j2k.tree.impl.modality
|
||||||
|
|
||||||
class ModalityConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class ModalityConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||||
|
|
||||||
|
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element is JKClass) {
|
when (element) {
|
||||||
processClass(element)
|
is JKClass -> processClass(element)
|
||||||
|
is JKJavaMethod -> processMethod(element)
|
||||||
}
|
}
|
||||||
return recurse(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 {
|
interface JKModalityModifier : JKModifier {
|
||||||
enum class Modality {
|
enum class Modality {
|
||||||
OPEN, FINAL, ABSTRACT
|
OPEN, FINAL, ABSTRACT, OVERRIDE
|
||||||
}
|
}
|
||||||
|
|
||||||
val modality: Modality
|
val modality: Modality
|
||||||
|
|||||||
Reference in New Issue
Block a user