New J2K: Rename visitable JKElement to JKTreeElement
This commit is contained in:
committed by
Ilya Kirillov
parent
3aeffe25ee
commit
254179321c
@@ -18,11 +18,11 @@ package org.jetbrains.kotlin.j2k
|
||||
|
||||
import org.jetbrains.kotlin.j2k.conversions.JavaFieldToKotlinPropertyConversion
|
||||
import org.jetbrains.kotlin.j2k.conversions.JavaMethodToKotlinFunctionConversion
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
|
||||
object ConversionsRunner {
|
||||
|
||||
fun doApply(trees: List<JKElement>) {
|
||||
fun doApply(trees: List<JKTreeElement>) {
|
||||
|
||||
trees.forEach {
|
||||
JavaFieldToKotlinPropertyConversion().runConversion(it)
|
||||
|
||||
@@ -318,7 +318,7 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
|
||||
private inner class ElementVisitor(val declarationMapper: DeclarationMapper) : JavaElementVisitor() {
|
||||
|
||||
var resultElement: JKElement? = null
|
||||
var resultElement: JKTreeElement? = null
|
||||
|
||||
override fun visitClass(aClass: PsiClass) {
|
||||
resultElement = with(declarationMapper) { aClass.toJK() }
|
||||
@@ -338,7 +338,7 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
}
|
||||
|
||||
|
||||
fun buildTree(psi: PsiElement): JKElement? {
|
||||
fun buildTree(psi: PsiElement): JKTreeElement? {
|
||||
assert(psi.language.`is`(JavaLanguage.INSTANCE)) { "Unable to build JK Tree using Java Visitor for language ${psi.language}" }
|
||||
val elementVisitor = ElementVisitor(declarationMapper)
|
||||
psi.accept(elementVisitor)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.kotlin.j2k
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.JKClass
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKUniverseClass
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
@@ -37,7 +37,7 @@ class NewCodeBuilder {
|
||||
|
||||
|
||||
inner class Visitor : JKVisitor<Unit, Unit> {
|
||||
override fun visitElement(element: JKElement, data: Unit) {
|
||||
override fun visitElement(element: JKTreeElement, data: Unit) {
|
||||
printer.print("/* !!! Hit visitElement for element type: ${element::class} !!! */")
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ class NewCodeBuilder {
|
||||
}
|
||||
|
||||
|
||||
fun printCodeOut(root: JKElement): String {
|
||||
fun printCodeOut(root: JKTreeElement): String {
|
||||
Visitor().also { root.accept(it, Unit) }
|
||||
return builder.toString()
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.openapi.progress.EmptyProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiJavaFile
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
import org.jetbrains.kotlin.j2k.tree.prettyDebugPrintTree
|
||||
|
||||
class NewJavaToKotlinConverter(
|
||||
@@ -28,7 +28,7 @@ class NewJavaToKotlinConverter(
|
||||
private val settings: ConverterSettings
|
||||
) {
|
||||
|
||||
private fun List<JKElement>.prettyPrintTrees() = buildString {
|
||||
private fun List<JKTreeElement>.prettyPrintTrees() = buildString {
|
||||
for (tree in this@prettyPrintTrees) {
|
||||
appendln()
|
||||
appendln(tree.prettyDebugPrintTree())
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.conversions
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
|
||||
abstract class BaseConversion {
|
||||
/**
|
||||
* @return true if something changed
|
||||
*/
|
||||
abstract fun runConversion(treeRoot: JKElement): Boolean
|
||||
abstract fun runConversion(treeRoot: JKTreeElement): Boolean
|
||||
|
||||
}
|
||||
+3
-3
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.conversions
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKJavaField
|
||||
import org.jetbrains.kotlin.j2k.tree.JKJavaMethod
|
||||
import org.jetbrains.kotlin.j2k.tree.JKUniverseClass
|
||||
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.j2k.tree.impl.JKKtFunctionImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKKtPropertyImpl
|
||||
|
||||
class JavaFieldToKotlinPropertyConversion : TransformerBasedConversion() {
|
||||
override fun visitElement(element: JKElement) {
|
||||
override fun visitElement(element: JKTreeElement) {
|
||||
element.acceptChildren(this, null)
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ class JavaFieldToKotlinPropertyConversion : TransformerBasedConversion() {
|
||||
}
|
||||
|
||||
class JavaMethodToKotlinFunctionConversion : TransformerBasedConversion() {
|
||||
override fun visitElement(element: JKElement) {
|
||||
override fun visitElement(element: JKTreeElement) {
|
||||
element.acceptChildren(this, null)
|
||||
}
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.conversions
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitorVoid
|
||||
|
||||
abstract class TransformerBasedConversion : BaseConversion(), JKVisitorVoid {
|
||||
protected var somethingChanged = false
|
||||
|
||||
override fun runConversion(treeRoot: JKElement): Boolean {
|
||||
override fun runConversion(treeRoot: JKTreeElement): Boolean {
|
||||
somethingChanged = false
|
||||
treeRoot.accept(this, null)
|
||||
return somethingChanged
|
||||
|
||||
@@ -23,7 +23,7 @@ private class DebugTreePrinter : JKVisitorVoid {
|
||||
internal val stringBuilder = StringBuilder()
|
||||
private val printer = Printer(stringBuilder)
|
||||
|
||||
override fun visitElement(element: JKElement) {
|
||||
override fun visitElement(element: JKTreeElement) {
|
||||
printer.println(element.classNameWithoutJK(), " [")
|
||||
printer.indented {
|
||||
element.acceptChildren(this, null)
|
||||
@@ -107,4 +107,4 @@ private inline fun Printer.indented(block: () -> Unit) {
|
||||
}
|
||||
|
||||
|
||||
fun JKElement.prettyDebugPrintTree(): String = DebugTreePrinter().apply { accept(this, null) }.stringBuilder.toString()
|
||||
fun JKTreeElement.prettyDebugPrintTree(): String = DebugTreePrinter().apply { accept(this, null) }.stringBuilder.toString()
|
||||
@@ -20,10 +20,10 @@ import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKJavaPrimitiveTypeImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKModifierListImpl
|
||||
|
||||
abstract class JKMultiverseElementBase : JKTreeElement {
|
||||
override var parent: JKTreeElement? = null
|
||||
abstract class JKMultiverseElementBase : JKElement {
|
||||
override var parent: JKElement? = null
|
||||
|
||||
fun <D : JKElement> D.setParent(p: JKElement): D {
|
||||
fun <D : JKTreeElement> D.setParent(p: JKTreeElement): D {
|
||||
parent = p
|
||||
return this
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
import kotlin.properties.ReadWriteProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
private class JKChild<T : JKElement>(val value: Int) : ReadWriteProperty<JKMutableBranchElement, T> {
|
||||
private class JKChild<T : JKTreeElement>(val value: Int) : ReadWriteProperty<JKMutableBranchElement, T> {
|
||||
override operator fun getValue(thisRef: JKMutableBranchElement, property: KProperty<*>): T {
|
||||
return thisRef.children[value] as T
|
||||
}
|
||||
@@ -44,14 +44,14 @@ class JKListChild<T : JKTreeElement>() : ReadWriteProperty<JKMutableBranchElemen
|
||||
thisRef.children.forEach { it.parent = null }
|
||||
value.forEach { it.parent = thisRef }
|
||||
thisRef.children.clear()
|
||||
thisRef.children.addAll(value as List<JKElement>)
|
||||
thisRef.children.addAll(value as List<JKTreeElement>)
|
||||
}
|
||||
}
|
||||
|
||||
abstract class JKElementBase : JKElement {
|
||||
override var parent: JKTreeElement? = null
|
||||
abstract class JKElementBase : JKTreeElement {
|
||||
override var parent: JKElement? = null
|
||||
|
||||
fun <D : JKElement> D.setParent(p: JKElement): D {
|
||||
fun <D : JKTreeElement> D.setParent(p: JKTreeElement): D {
|
||||
parent = p
|
||||
return this
|
||||
}
|
||||
@@ -62,7 +62,7 @@ abstract class JKElementBase : JKElement {
|
||||
}
|
||||
|
||||
interface JKMutableBranchElement : JKBranchElement {
|
||||
override val children: MutableList<JKElement>
|
||||
override val children: MutableList<JKTreeElement>
|
||||
}
|
||||
|
||||
abstract class JKBranchElementBase : JKElementBase(), JKMutableBranchElement {
|
||||
@@ -71,21 +71,21 @@ abstract class JKBranchElementBase : JKElementBase(), JKMutableBranchElement {
|
||||
}
|
||||
|
||||
protected var childNum = 0
|
||||
protected fun <T : JKElement, U : T> child(v: U): ReadWriteProperty<JKMutableBranchElement, T> {
|
||||
protected fun <T : JKTreeElement, U : T> child(v: U): ReadWriteProperty<JKMutableBranchElement, T> {
|
||||
return JKChild(childNum++)
|
||||
}
|
||||
|
||||
override val children: MutableList<JKElement> = mutableListOf()
|
||||
override val children: MutableList<JKTreeElement> = mutableListOf()
|
||||
}
|
||||
|
||||
abstract class JKElementListBase: JKElementBase(), JKMutableBranchElement {
|
||||
override val children: MutableList<JKElement> = mutableListOf()
|
||||
override val children: MutableList<JKTreeElement> = mutableListOf()
|
||||
|
||||
protected inline fun <reified T : JKElement> children(): JKListChild<T> {
|
||||
protected inline fun <reified T : JKTreeElement> children(): JKListChild<T> {
|
||||
return JKListChild()
|
||||
}
|
||||
|
||||
protected inline fun <reified T : JKElement> children(v: List<T>): JKListChild<T> {
|
||||
protected inline fun <reified T : JKTreeElement> children(v: List<T>): JKListChild<T> {
|
||||
children.addAll(v)
|
||||
return JKListChild()
|
||||
}
|
||||
|
||||
@@ -19,15 +19,15 @@ package org.jetbrains.kotlin.j2k.tree
|
||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
interface JKElement : JKTreeElement {
|
||||
interface JKTreeElement : JKElement {
|
||||
fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R
|
||||
|
||||
fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D)
|
||||
}
|
||||
|
||||
interface JKUniverseDeclaration : JKElement, JKDeclaration
|
||||
interface JKUniverseDeclaration : JKTreeElement, JKDeclaration
|
||||
|
||||
interface JKDeclarationList : JKTreeElement {
|
||||
interface JKDeclarationList : JKElement {
|
||||
var declarations: List<JKUniverseDeclaration>
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ interface JKUniverseClass : JKUniverseDeclaration, JKClass {
|
||||
override val declarationList: JKDeclarationList
|
||||
}
|
||||
|
||||
interface JKModifier : JKElement
|
||||
interface JKModifier : JKTreeElement
|
||||
|
||||
interface JKModifierList : JKBranchElement, JKElement {
|
||||
interface JKModifierList : JKBranchElement, JKTreeElement {
|
||||
var modifiers: List<JKModifier>
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ interface JKAccessModifier : JKModifier
|
||||
|
||||
interface JKModalityModifier : JKModifier
|
||||
|
||||
interface JKReference : JKElement {
|
||||
interface JKReference : JKTreeElement {
|
||||
val target: JKReferenceTarget
|
||||
val referenceType: JKReferenceType
|
||||
|
||||
@@ -66,7 +66,7 @@ interface JKClassReference : JKReference {
|
||||
override val target: JKClass
|
||||
}
|
||||
|
||||
interface JKType : JKElement
|
||||
interface JKType : JKTreeElement
|
||||
|
||||
interface JKClassType : JKType {
|
||||
val classReference: JKClassReference
|
||||
@@ -74,21 +74,21 @@ interface JKClassType : JKType {
|
||||
val parameters: List<JKType>
|
||||
}
|
||||
|
||||
interface JKStatement : JKElement
|
||||
interface JKStatement : JKTreeElement
|
||||
|
||||
interface JKLoop : JKStatement
|
||||
|
||||
interface JKBlock : JKElement {
|
||||
interface JKBlock : JKTreeElement {
|
||||
var statements: List<JKStatement>
|
||||
}
|
||||
|
||||
interface JKIdentifier : JKElement
|
||||
interface JKIdentifier : JKTreeElement
|
||||
|
||||
interface JKNameIdentifier : JKIdentifier {
|
||||
val name: String
|
||||
}
|
||||
|
||||
interface JKExpression : JKElement
|
||||
interface JKExpression : JKTreeElement
|
||||
|
||||
interface JKExpressionStatement : JKStatement {
|
||||
val expression: JKExpression
|
||||
@@ -138,7 +138,7 @@ interface JKTypeCastExpression : JKExpression {
|
||||
val type: JKType
|
||||
}
|
||||
|
||||
interface JKExpressionList : JKElement {
|
||||
interface JKExpressionList : JKTreeElement {
|
||||
var expressions: List<JKExpression>
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ interface JKLiteralExpression : JKExpression {
|
||||
}
|
||||
}
|
||||
|
||||
interface JKValueArgument : JKElement {
|
||||
interface JKValueArgument : JKTreeElement {
|
||||
var type: JKType
|
||||
val name: String
|
||||
}
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
interface JKOperator: JKElement
|
||||
interface JKOperator: JKTreeElement
|
||||
|
||||
interface JKQualifier
|
||||
|
||||
interface JKTreeElement {
|
||||
var parent: JKTreeElement?
|
||||
interface JKElement {
|
||||
var parent: JKElement?
|
||||
}
|
||||
|
||||
interface JKBranchElement : JKTreeElement {
|
||||
val children: List<JKElement>
|
||||
interface JKBranchElement : JKElement {
|
||||
val children: List<JKTreeElement>
|
||||
}
|
||||
|
||||
interface JKModifierListOwner {
|
||||
@@ -36,7 +36,7 @@ interface JKReferenceTarget {
|
||||
val valid: Boolean
|
||||
}
|
||||
|
||||
interface JKDeclaration : JKTreeElement, JKReferenceTarget
|
||||
interface JKDeclaration : JKElement, JKReferenceTarget
|
||||
|
||||
interface JKClass : JKDeclaration, JKModifierListOwner {
|
||||
val name: JKNameIdentifier
|
||||
|
||||
+5
-5
@@ -98,7 +98,7 @@ fun genVisitors(commonData: List<InterfaceData>, uncommonData: List<InterfaceDat
|
||||
interfaceData.joinTo(this, separator = "\n") { (name, ext) ->
|
||||
val nameWithoutPrefix = name.removePrefix("JK")
|
||||
val argName = nameWithoutPrefix.decapitalize().safeVarName()
|
||||
val generifyCall = if (name != "JKElement") "= visit${ext!!.removePrefix("JK")}($argName, data)" else ""
|
||||
val generifyCall = if (name != "JKTreeElement") "= visit${ext!!.removePrefix("JK")}($argName, data)" else ""
|
||||
"""
|
||||
| fun visit$nameWithoutPrefix($argName: $name, data: D): R $generifyCall
|
||||
""".trimMargin()
|
||||
@@ -119,7 +119,7 @@ fun genVisitors(commonData: List<InterfaceData>, uncommonData: List<InterfaceDat
|
||||
val nameWithoutPrefix = name.removePrefix("JK")
|
||||
val argName = nameWithoutPrefix.decapitalize().safeVarName()
|
||||
val arg = "$argName: $name"
|
||||
val generifyCall = if (name != "JKElement") "= visit${ext!!.removePrefix("JK")}($argName, null)" else ""
|
||||
val generifyCall = if (name != "JKTreeElement") "= visit${ext!!.removePrefix("JK")}($argName, null)" else ""
|
||||
"""
|
||||
| fun visit$nameWithoutPrefix($arg) $generifyCall
|
||||
| override fun visit$nameWithoutPrefix($arg, data: Nothing?) = visit$nameWithoutPrefix($argName)
|
||||
@@ -135,7 +135,7 @@ fun genVisitors(commonData: List<InterfaceData>, uncommonData: List<InterfaceDat
|
||||
appendln("import org.jetbrains.kotlin.j2k.tree.*")
|
||||
appendln()
|
||||
|
||||
appendln("interface $transformerName<in D> : JKVisitor<JKElement, D> {")
|
||||
appendln("interface $transformerName<in D> : JKVisitor<JKTreeElement, D> {")
|
||||
|
||||
interfaceData.joinTo(this, separator = "\n") { (name, ext) ->
|
||||
val nameWithoutPrefix = name.removePrefix("JK")
|
||||
@@ -144,7 +144,7 @@ fun genVisitors(commonData: List<InterfaceData>, uncommonData: List<InterfaceDat
|
||||
val leastCommonName = name.firstCommonInterfaceName()
|
||||
val cast = "as $leastCommonName".takeIf { leastCommonName == name } ?: ""
|
||||
|
||||
val generifyCall = if (name != "JKElement") "= visit${ext!!.removePrefix("JK")}($argName, data) $cast" else ""
|
||||
val generifyCall = if (name != "JKTreeElement") "= visit${ext!!.removePrefix("JK")}($argName, data) $cast" else ""
|
||||
|
||||
"""
|
||||
| override fun visit$nameWithoutPrefix($argName: $name, data: D): $leastCommonName $generifyCall
|
||||
@@ -170,7 +170,7 @@ fun genVisitors(commonData: List<InterfaceData>, uncommonData: List<InterfaceDat
|
||||
|
||||
val leastCommonName = name.firstCommonInterfaceName()
|
||||
val cast = "as $leastCommonName".takeIf { leastCommonName == name } ?: ""
|
||||
val generifyCall = if (name != "JKElement") "= visit${ext!!.removePrefix("JK")}($argName) $cast" else ""
|
||||
val generifyCall = if (name != "JKTreeElement") "= visit${ext!!.removePrefix("JK")}($argName) $cast" else ""
|
||||
|
||||
"""
|
||||
| fun visit$nameWithoutPrefix($arg): $leastCommonName $generifyCall
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKVisitor<out R, in D> {
|
||||
fun visitElement(element: JKElement, data: D): R
|
||||
fun visitElement(element: JKTreeElement, data: D): R
|
||||
fun visitUniverseDeclaration(universeDeclaration: JKUniverseDeclaration, data: D): R = visitElement(universeDeclaration, data)
|
||||
fun visitUniverseClass(universeClass: JKUniverseClass, data: D): R = visitUniverseDeclaration(universeClass, data)
|
||||
fun visitModifier(modifier: JKModifier, data: D): R = visitElement(modifier, data)
|
||||
|
||||
@@ -3,8 +3,8 @@ package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
fun visitElement(element: JKElement)
|
||||
override fun visitElement(element: JKElement, data: Nothing?) = visitElement(element)
|
||||
fun visitElement(element: JKTreeElement)
|
||||
override fun visitElement(element: JKTreeElement, data: Nothing?) = visitElement(element)
|
||||
fun visitUniverseDeclaration(universeDeclaration: JKUniverseDeclaration) = visitElement(universeDeclaration, null)
|
||||
override fun visitUniverseDeclaration(universeDeclaration: JKUniverseDeclaration, data: Nothing?) = visitUniverseDeclaration(universeDeclaration)
|
||||
fun visitUniverseClass(universeClass: JKUniverseClass) = visitUniverseDeclaration(universeClass, null)
|
||||
|
||||
Reference in New Issue
Block a user