diff --git a/j2k/GenerateJKTreeVisitor.kts b/j2k/GenerateJKTreeVisitorAndTransformer.kts similarity index 53% rename from j2k/GenerateJKTreeVisitor.kts rename to j2k/GenerateJKTreeVisitorAndTransformer.kts index be4740d648e..8cb6b0d2512 100644 --- a/j2k/GenerateJKTreeVisitor.kts +++ b/j2k/GenerateJKTreeVisitorAndTransformer.kts @@ -35,6 +35,8 @@ import java.io.File val JK_ROOT = File("./j2k/newSrc/org/jetbrains/kotlin/j2k/tree") +val JK_OUT_ROOT = File(JK_ROOT, "visitors") + val JK_KT_FILE = File(JK_ROOT, "k.kt") val JK_JAVA_FILE = File(JK_ROOT, "j.kt") val JK_COMMON_FILE = File(JK_ROOT, "jk.kt") @@ -58,15 +60,17 @@ fun String.safeVarName() = when (this) { else -> this } -fun genVisitors(interfaceData: List, visitorName: String, extends: String = "") { +fun genVisitors(interfaceData: List, visitorName: String, transformerName: String, visitorExtends: String? = null, transformerExtends: String? = null) { - val outFile = File(JK_ROOT, "$visitorName.kt") + val pkg = "package org.jetbrains.kotlin.j2k.tree.visitors" - outFile.writeText(buildString { - appendln("package org.jetbrains.kotlin.j2k.tree") + File(JK_OUT_ROOT, "$visitorName.kt").writeText(buildString { + appendln(pkg) appendln() - val extends = if (extends.isNotBlank()) ": $extends" else "" - appendln("interface $visitorName $extends {") + appendln("import org.jetbrains.kotlin.j2k.tree.*") + appendln() + val extends = visitorExtends?.let { " : $it" } ?: "" + appendln("interface $visitorName$extends {") interfaceData.joinTo(this, separator = "\n") { (name, ext) -> val nameWithoutPrefix = name.removePrefix("JK") val argName = nameWithoutPrefix.decapitalize().safeVarName() @@ -79,12 +83,13 @@ fun genVisitors(interfaceData: List, visitorName: String, extends appendln("}") }) - val outVoidFile = File(JK_ROOT, "${visitorName}Void.kt") - outVoidFile.writeText(buildString { - appendln("package org.jetbrains.kotlin.j2k.tree") + File(JK_OUT_ROOT, "${visitorName}Void.kt").writeText(buildString { + appendln(pkg) appendln() - val extends = if (extends.isNotBlank()) ", ${extends}Void" else "" + appendln("import org.jetbrains.kotlin.j2k.tree.*") + appendln() + val extends = visitorExtends?.let { ", ${it}Void" } ?: "" appendln("interface ${visitorName}Void : $visitorName$extends {") interfaceData.joinTo(this, separator = "\n") { (name, ext) -> @@ -100,17 +105,54 @@ fun genVisitors(interfaceData: List, visitorName: String, extends appendln() appendln("}") }) + + File(JK_OUT_ROOT, "$transformerName.kt").writeText(buildString { + appendln(pkg) + appendln() + appendln("import org.jetbrains.kotlin.j2k.tree.*") + appendln() + val extends = transformerExtends?.let { " : $it" } ?: "" + + appendln("interface $transformerName$extends {") + + interfaceData.joinTo(this, separator = "\n") { (name, ext) -> + val nameWithoutPrefix = name.removePrefix("JK") + val argName = nameWithoutPrefix.decapitalize().safeVarName() + val generifyCall = if (name != "JKElement") "= transform${ext!!.removePrefix("JK")}($argName, data)" else "" + """ + | fun transform$nameWithoutPrefix($argName: $name, data: D): JKElement $generifyCall + """.trimMargin() + } + appendln() + appendln("}") + }) + + + File(JK_OUT_ROOT, "${transformerName}Void.kt").writeText(buildString { + appendln(pkg) + appendln() + appendln("import org.jetbrains.kotlin.j2k.tree.*") + appendln() + val extends = transformerExtends?.let { ", ${it}Void" } ?: "" + + appendln("interface ${transformerName}Void : $transformerName$extends {") + interfaceData.joinTo(this, separator = "\n") { (name, ext) -> + val nameWithoutPrefix = name.removePrefix("JK") + val argName = nameWithoutPrefix.decapitalize().safeVarName() + val arg = "$argName: $name" + val generifyCall = if (name != "JKElement") "= transform${ext!!.removePrefix("JK")}($argName, null)" else ": JKElement" + """ + | fun transform$nameWithoutPrefix($arg) $generifyCall + | override fun transform$nameWithoutPrefix($arg, data: Nothing?) = transform$nameWithoutPrefix($argName) + """.trimMargin() + } + appendln() + appendln("}") + }) } -// JKVisitor + Void -genVisitors(JK_COMMON_FILE.interfaceNames(), "JKVisitor") -genVisitors(JK_JAVA_FILE.interfaceNames(), "JKJavaVisitor", "JKVisitor") -genVisitors(JK_KT_FILE.interfaceNames(), "JKKtVisitor", "JKVisitor") - -/* JKKtVisitor : JKVisitor + Void - JKJavaVisitor : JKVisitor + Void - */ - -//val visitNames = +genVisitors(JK_COMMON_FILE.interfaceNames(), "JKVisitor", "JKTransformer") +genVisitors(JK_JAVA_FILE.interfaceNames(), "JKJavaVisitor", "JKJavaTransformer", "JKVisitor", "JKTransformer") +genVisitors(JK_KT_FILE.interfaceNames(), "JKKtVisitor", "JKKtTransformer", "JKVisitor", "JKTransformer") diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt index 06b4e829c16..f0826e84cf8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.j2k.tree +import org.jetbrains.kotlin.j2k.tree.visitors.JKJavaKtVisitorVoid import org.jetbrains.kotlin.utils.Printer private class DebugTreePrinter : JKJavaKtVisitorVoid { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaKtVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaKtVisitorVoid.kt deleted file mode 100644 index 50fb4f562e6..00000000000 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaKtVisitorVoid.kt +++ /dev/null @@ -1,3 +0,0 @@ -package org.jetbrains.kotlin.j2k.tree - -interface JKJavaKtVisitorVoid : JKJavaKtVisitor, JKJavaVisitorVoid, JKKtVisitorVoid diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index 1f4b096eb39..ea660979ba0 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -17,6 +17,8 @@ package org.jetbrains.kotlin.j2k.tree.impl import org.jetbrains.kotlin.j2k.tree.* +import org.jetbrains.kotlin.j2k.tree.visitors.JKJavaVisitor +import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor class JKJavaFieldImpl(override var type: JKTypeIdentifier, override var name: JKNameIdentifier, diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index f872675085a..ba545059295 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -17,11 +17,17 @@ package org.jetbrains.kotlin.j2k.tree.impl import org.jetbrains.kotlin.j2k.tree.* +import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer +import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor abstract class JKElementBase : JKElement { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitElement(this, data) override fun acceptChildren(visitor: JKVisitor, data: D) {} + + override fun transform(transformer: JKTransformer, data: D): JKElement = transformer.transformElement(this, data) + + override fun transformChildren(transformer: JKTransformer, data: D) {} } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index b5b3842672b..09d86e7b425 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -16,11 +16,18 @@ package org.jetbrains.kotlin.j2k.tree +import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer +import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor + interface JKElement { fun accept(visitor: JKVisitor, data: D): R fun acceptChildren(visitor: JKVisitor, data: D) + + fun transform(transformer: JKTransformer, data: D): JKElement + + fun transformChildren(transformer: JKTransformer, data: D) } interface JKClass : JKDeclaration { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtTransformer.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtTransformer.kt new file mode 100644 index 00000000000..4f0e5b9147d --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtTransformer.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.j2k.tree.visitors + +interface JKJavaKtTransformer : JKJavaTransformer, JKKtTransformer \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtTransformerVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtTransformerVoid.kt new file mode 100644 index 00000000000..a5a759d881a --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtTransformerVoid.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.j2k.tree.visitors + +interface JKJavaKtTransformerVoid : JKJavaKtTransformer, JKJavaTransformerVoid, JKKtTransformerVoid \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaKtVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtVisitor.kt similarity index 61% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaKtVisitor.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtVisitor.kt index 952b33e26d3..9b806e505e1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaKtVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtVisitor.kt @@ -1,3 +1,3 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors interface JKJavaKtVisitor : JKJavaVisitor, JKKtVisitor diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtVisitorVoid.kt new file mode 100644 index 00000000000..066a98bdeb3 --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaKtVisitorVoid.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.j2k.tree.visitors + +interface JKJavaKtVisitorVoid : JKJavaKtVisitor, JKJavaVisitorVoid, JKKtVisitorVoid diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaTransformer.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaTransformer.kt new file mode 100644 index 00000000000..ea42473c0db --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaTransformer.kt @@ -0,0 +1,14 @@ +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* + +interface JKJavaTransformer : JKTransformer { + fun transformJavaField(javaField: JKJavaField, data: D): JKElement = transformDeclaration(javaField, data) + fun transformJavaMethod(javaMethod: JKJavaMethod, data: D): JKElement = transformDeclaration(javaMethod, data) + fun transformJavaForLoop(javaForLoop: JKJavaForLoop, data: D): JKElement = transformLoop(javaForLoop, data) + fun transformJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): JKElement = transformExpression(javaAssignmentExpression, data) + fun transformJavaCall(javaCall: JKJavaCall, data: D): JKElement = transformCall(javaCall, data) + fun transformJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): JKElement = transformTypeIdentifier(javaTypeIdentifier, data) + fun transformJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): JKElement = transformLiteralExpression(javaStringLiteralExpression, data) + fun transformJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): JKElement = transformAccessModifier(javaAccessModifier, data) +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaTransformerVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaTransformerVoid.kt new file mode 100644 index 00000000000..b6e59b49b74 --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaTransformerVoid.kt @@ -0,0 +1,22 @@ +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* + +interface JKJavaTransformerVoid : JKJavaTransformer, JKTransformerVoid { + fun transformJavaField(javaField: JKJavaField) = transformDeclaration(javaField, null) + override fun transformJavaField(javaField: JKJavaField, data: Nothing?) = transformJavaField(javaField) + fun transformJavaMethod(javaMethod: JKJavaMethod) = transformDeclaration(javaMethod, null) + override fun transformJavaMethod(javaMethod: JKJavaMethod, data: Nothing?) = transformJavaMethod(javaMethod) + fun transformJavaForLoop(javaForLoop: JKJavaForLoop) = transformLoop(javaForLoop, null) + override fun transformJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?) = transformJavaForLoop(javaForLoop) + fun transformJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression) = transformExpression(javaAssignmentExpression, null) + override fun transformJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?) = transformJavaAssignmentExpression(javaAssignmentExpression) + fun transformJavaCall(javaCall: JKJavaCall) = transformCall(javaCall, null) + override fun transformJavaCall(javaCall: JKJavaCall, data: Nothing?) = transformJavaCall(javaCall) + fun transformJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier) = transformTypeIdentifier(javaTypeIdentifier, null) + override fun transformJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?) = transformJavaTypeIdentifier(javaTypeIdentifier) + fun transformJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression) = transformLiteralExpression(javaStringLiteralExpression, null) + override fun transformJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?) = transformJavaStringLiteralExpression(javaStringLiteralExpression) + fun transformJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) = transformAccessModifier(javaAccessModifier, null) + override fun transformJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?) = transformJavaAccessModifier(javaAccessModifier) +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaVisitor.kt similarity index 92% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaVisitor.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaVisitor.kt index 5a574445d95..1342ac4a3cf 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaVisitor.kt @@ -1,4 +1,6 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* interface JKJavaVisitor : JKVisitor { fun visitJavaField(javaField: JKJavaField, data: D): R = visitDeclaration(javaField, data) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaVisitorVoid.kt similarity index 95% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaVisitorVoid.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaVisitorVoid.kt index 915e9673c8f..e865e8982b2 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKJavaVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKJavaVisitorVoid.kt @@ -1,4 +1,6 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* interface JKJavaVisitorVoid : JKJavaVisitor, JKVisitorVoid { fun visitJavaField(javaField: JKJavaField) = visitDeclaration(javaField, null) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtTransformer.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtTransformer.kt new file mode 100644 index 00000000000..b1dae407caa --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtTransformer.kt @@ -0,0 +1,11 @@ +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* + +interface JKKtTransformer : JKTransformer { + fun transformKtFun(ktFun: JKKtFun, data: D): JKElement = transformDeclaration(ktFun, data) + fun transformKtConstructor(ktConstructor: JKKtConstructor, data: D): JKElement = transformDeclaration(ktConstructor, data) + fun transformKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): JKElement = transformKtConstructor(ktPrimaryConstructor, data) + fun transformKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: D): JKElement = transformStatement(ktAssignmentStatement, data) + fun transformKtCall(ktCall: JKKtCall, data: D): JKElement = transformCall(ktCall, data) +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtTransformerVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtTransformerVoid.kt new file mode 100644 index 00000000000..06e61d65785 --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtTransformerVoid.kt @@ -0,0 +1,16 @@ +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* + +interface JKKtTransformerVoid : JKKtTransformer, JKTransformerVoid { + fun transformKtFun(ktFun: JKKtFun) = transformDeclaration(ktFun, null) + override fun transformKtFun(ktFun: JKKtFun, data: Nothing?) = transformKtFun(ktFun) + fun transformKtConstructor(ktConstructor: JKKtConstructor) = transformDeclaration(ktConstructor, null) + override fun transformKtConstructor(ktConstructor: JKKtConstructor, data: Nothing?) = transformKtConstructor(ktConstructor) + fun transformKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor) = transformKtConstructor(ktPrimaryConstructor, null) + override fun transformKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: Nothing?) = transformKtPrimaryConstructor(ktPrimaryConstructor) + fun transformKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement) = transformStatement(ktAssignmentStatement, null) + override fun transformKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: Nothing?) = transformKtAssignmentStatement(ktAssignmentStatement) + fun transformKtCall(ktCall: JKKtCall) = transformCall(ktCall, null) + override fun transformKtCall(ktCall: JKKtCall, data: Nothing?) = transformKtCall(ktCall) +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKKtVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtVisitor.kt similarity index 87% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKKtVisitor.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtVisitor.kt index 3af1744681e..eb6fead5284 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKKtVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtVisitor.kt @@ -1,4 +1,6 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* interface JKKtVisitor : JKVisitor { fun visitKtFun(ktFun: JKKtFun, data: D): R = visitDeclaration(ktFun, data) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKKtVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtVisitorVoid.kt similarity index 93% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKKtVisitorVoid.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtVisitorVoid.kt index fc7af609b76..115f50c517c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKKtVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKKtVisitorVoid.kt @@ -1,4 +1,6 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* interface JKKtVisitorVoid : JKKtVisitor, JKVisitorVoid { fun visitKtFun(ktFun: JKKtFun) = visitDeclaration(ktFun, null) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt new file mode 100644 index 00000000000..689133eac7a --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt @@ -0,0 +1,21 @@ +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* + +interface JKTransformer { + fun transformElement(element: JKElement, data: D): JKElement + fun transformClass(klass: JKClass, data: D): JKElement = transformDeclaration(klass, data) + fun transformStatement(statement: JKStatement, data: D): JKElement = transformElement(statement, data) + fun transformExpression(expression: JKExpression, data: D): JKElement = transformStatement(expression, data) + fun transformLoop(loop: JKLoop, data: D): JKElement = transformStatement(loop, data) + fun transformDeclaration(declaration: JKDeclaration, data: D): JKElement = transformElement(declaration, data) + fun transformBlock(block: JKBlock, data: D): JKElement = transformElement(block, data) + fun transformCall(call: JKCall, data: D): JKElement = transformExpression(call, data) + fun transformIdentifier(identifier: JKIdentifier, data: D): JKElement = transformElement(identifier, data) + fun transformTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: D): JKElement = transformIdentifier(typeIdentifier, data) + fun transformNameIdentifier(nameIdentifier: JKNameIdentifier, data: D): JKElement = transformIdentifier(nameIdentifier, data) + fun transformLiteralExpression(literalExpression: JKLiteralExpression, data: D): JKElement = transformExpression(literalExpression, data) + fun transformModifierList(modifierList: JKModifierList, data: D): JKElement = transformElement(modifierList, data) + fun transformModifier(modifier: JKModifier, data: D): JKElement = transformElement(modifier, data) + fun transformAccessModifier(accessModifier: JKAccessModifier, data: D): JKElement = transformModifier(accessModifier, data) +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt new file mode 100644 index 00000000000..7c73369fbe1 --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt @@ -0,0 +1,36 @@ +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* + +interface JKTransformerVoid : JKTransformer { + fun transformElement(element: JKElement) : JKElement + override fun transformElement(element: JKElement, data: Nothing?) = transformElement(element) + fun transformClass(klass: JKClass) = transformDeclaration(klass, null) + override fun transformClass(klass: JKClass, data: Nothing?) = transformClass(klass) + fun transformStatement(statement: JKStatement) = transformElement(statement, null) + override fun transformStatement(statement: JKStatement, data: Nothing?) = transformStatement(statement) + fun transformExpression(expression: JKExpression) = transformStatement(expression, null) + override fun transformExpression(expression: JKExpression, data: Nothing?) = transformExpression(expression) + fun transformLoop(loop: JKLoop) = transformStatement(loop, null) + override fun transformLoop(loop: JKLoop, data: Nothing?) = transformLoop(loop) + fun transformDeclaration(declaration: JKDeclaration) = transformElement(declaration, null) + override fun transformDeclaration(declaration: JKDeclaration, data: Nothing?) = transformDeclaration(declaration) + fun transformBlock(block: JKBlock) = transformElement(block, null) + override fun transformBlock(block: JKBlock, data: Nothing?) = transformBlock(block) + fun transformCall(call: JKCall) = transformExpression(call, null) + override fun transformCall(call: JKCall, data: Nothing?) = transformCall(call) + fun transformIdentifier(identifier: JKIdentifier) = transformElement(identifier, null) + override fun transformIdentifier(identifier: JKIdentifier, data: Nothing?) = transformIdentifier(identifier) + fun transformTypeIdentifier(typeIdentifier: JKTypeIdentifier) = transformIdentifier(typeIdentifier, null) + override fun transformTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: Nothing?) = transformTypeIdentifier(typeIdentifier) + fun transformNameIdentifier(nameIdentifier: JKNameIdentifier) = transformIdentifier(nameIdentifier, null) + override fun transformNameIdentifier(nameIdentifier: JKNameIdentifier, data: Nothing?) = transformNameIdentifier(nameIdentifier) + fun transformLiteralExpression(literalExpression: JKLiteralExpression) = transformExpression(literalExpression, null) + override fun transformLiteralExpression(literalExpression: JKLiteralExpression, data: Nothing?) = transformLiteralExpression(literalExpression) + fun transformModifierList(modifierList: JKModifierList) = transformElement(modifierList, null) + override fun transformModifierList(modifierList: JKModifierList, data: Nothing?) = transformModifierList(modifierList) + fun transformModifier(modifier: JKModifier) = transformElement(modifier, null) + override fun transformModifier(modifier: JKModifier, data: Nothing?) = transformModifier(modifier) + fun transformAccessModifier(accessModifier: JKAccessModifier) = transformModifier(accessModifier, null) + override fun transformAccessModifier(accessModifier: JKAccessModifier, data: Nothing?) = transformAccessModifier(accessModifier) +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt similarity index 92% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKVisitor.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt index ea51f23b256..92ded4830c8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -1,6 +1,8 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors -interface JKVisitor { +import org.jetbrains.kotlin.j2k.tree.* + +interface JKVisitor { fun visitElement(element: JKElement, data: D): R fun visitClass(klass: JKClass, data: D): R = visitDeclaration(klass, data) fun visitStatement(statement: JKStatement, data: D): R = visitElement(statement, data) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt similarity index 97% rename from j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKVisitorVoid.kt rename to j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt index b91c1f70110..aaf8be931dc 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -1,4 +1,6 @@ -package org.jetbrains.kotlin.j2k.tree +package org.jetbrains.kotlin.j2k.tree.visitors + +import org.jetbrains.kotlin.j2k.tree.* interface JKVisitorVoid : JKVisitor { fun visitElement(element: JKElement)