New J2K: Add transformers
This commit is contained in:
committed by
Ilya Kirillov
parent
4f7c46741e
commit
68c03a6236
@@ -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<InterfaceData>, visitorName: String, extends: String = "") {
|
||||
fun genVisitors(interfaceData: List<InterfaceData>, 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<R, D>" else ""
|
||||
appendln("interface $visitorName<R, D> $extends {")
|
||||
appendln("import org.jetbrains.kotlin.j2k.tree.*")
|
||||
appendln()
|
||||
val extends = visitorExtends?.let { " : $it<R, D>" } ?: ""
|
||||
appendln("interface $visitorName<R, D>$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<InterfaceData>, 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<Unit, Nothing?>$extends {")
|
||||
interfaceData.joinTo(this, separator = "\n") { (name, ext) ->
|
||||
@@ -100,17 +105,54 @@ fun genVisitors(interfaceData: List<InterfaceData>, 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<D>" } ?: ""
|
||||
|
||||
appendln("interface $transformerName<D>$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<Nothing?>$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<R,D> + Void
|
||||
genVisitors(JK_COMMON_FILE.interfaceNames(), "JKVisitor")
|
||||
genVisitors(JK_JAVA_FILE.interfaceNames(), "JKJavaVisitor", "JKVisitor")
|
||||
genVisitors(JK_KT_FILE.interfaceNames(), "JKKtVisitor", "JKVisitor")
|
||||
|
||||
/* JKKtVisitor<R,D> : JKVisitor<R,D> + Void
|
||||
JKJavaVisitor<R,D> : JKVisitor<R,D> + 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")
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
interface JKJavaKtVisitorVoid : JKJavaKtVisitor<Unit, Nothing?>, JKJavaVisitorVoid, JKKtVisitorVoid
|
||||
@@ -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,
|
||||
|
||||
@@ -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 <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitElement(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {}
|
||||
|
||||
override fun <D> transform(transformer: JKTransformer<D>, data: D): JKElement = transformer.transformElement(this, data)
|
||||
|
||||
override fun <D> transformChildren(transformer: JKTransformer<D>, data: D) {}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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 <R, D> accept(visitor: JKVisitor<R, D>, data: D): R
|
||||
|
||||
fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D)
|
||||
|
||||
fun <D> transform(transformer: JKTransformer<D>, data: D): JKElement
|
||||
|
||||
fun <D> transformChildren(transformer: JKTransformer<D>, data: D)
|
||||
}
|
||||
|
||||
interface JKClass : JKDeclaration {
|
||||
|
||||
@@ -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<D> : JKJavaTransformer<D>, JKKtTransformer<D>
|
||||
@@ -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<Nothing?>, JKJavaTransformerVoid, JKKtTransformerVoid
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
interface JKJavaKtVisitor<R, D> : JKJavaVisitor<R, D>, JKKtVisitor<R, D>
|
||||
@@ -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<Unit, Nothing?>, JKJavaVisitorVoid, JKKtVisitorVoid
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKJavaTransformer<D> : JKTransformer<D> {
|
||||
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)
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKJavaTransformerVoid : JKJavaTransformer<Nothing?>, 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)
|
||||
}
|
||||
+3
-1
@@ -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<R, D> : JKVisitor<R, D> {
|
||||
fun visitJavaField(javaField: JKJavaField, data: D): R = visitDeclaration(javaField, data)
|
||||
+3
-1
@@ -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<Unit, Nothing?>, JKVisitorVoid {
|
||||
fun visitJavaField(javaField: JKJavaField) = visitDeclaration(javaField, null)
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKKtTransformer<D> : JKTransformer<D> {
|
||||
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)
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKKtTransformerVoid : JKKtTransformer<Nothing?>, 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)
|
||||
}
|
||||
+3
-1
@@ -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<R, D> : JKVisitor<R, D> {
|
||||
fun visitKtFun(ktFun: JKKtFun, data: D): R = visitDeclaration(ktFun, data)
|
||||
+3
-1
@@ -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<Unit, Nothing?>, JKVisitorVoid {
|
||||
fun visitKtFun(ktFun: JKKtFun) = visitDeclaration(ktFun, null)
|
||||
@@ -0,0 +1,21 @@
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKTransformer<D> {
|
||||
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)
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKTransformerVoid : JKTransformer<Nothing?> {
|
||||
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)
|
||||
}
|
||||
+4
-2
@@ -1,6 +1,8 @@
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
package org.jetbrains.kotlin.j2k.tree.visitors
|
||||
|
||||
interface JKVisitor<R, D> {
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
|
||||
interface JKVisitor<R, D> {
|
||||
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)
|
||||
+3
-1
@@ -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<Unit, Nothing?> {
|
||||
fun visitElement(element: JKElement)
|
||||
Reference in New Issue
Block a user