New J2K: Rename visitable JKElement to JKTreeElement

This commit is contained in:
Simon Ogorodnik
2018-05-10 17:40:04 +03:00
committed by Ilya Kirillov
parent 3aeffe25ee
commit 254179321c
15 changed files with 59 additions and 59 deletions
@@ -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
}
@@ -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()
}
+13 -13
View File
@@ -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
@@ -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)