New J2K: Drop separated visitors

This commit is contained in:
Simon Ogorodnik
2017-10-14 01:43:03 +03:00
committed by Ilya Kirillov
parent 68c03a6236
commit c1f50d3594
19 changed files with 147 additions and 262 deletions
+9 -13
View File
@@ -69,8 +69,8 @@ fun genVisitors(interfaceData: List<InterfaceData>, visitorName: String, transfo
appendln()
appendln("import org.jetbrains.kotlin.j2k.tree.*")
appendln()
val extends = visitorExtends?.let { " : $it<R, D>" } ?: ""
appendln("interface $visitorName<R, D>$extends {")
val extends = visitorExtends?.let { " : $it<out R, in D>" } ?: ""
appendln("interface $visitorName<out R, in D>$extends {")
interfaceData.joinTo(this, separator = "\n") { (name, ext) ->
val nameWithoutPrefix = name.removePrefix("JK")
val argName = nameWithoutPrefix.decapitalize().safeVarName()
@@ -111,16 +111,16 @@ fun genVisitors(interfaceData: List<InterfaceData>, visitorName: String, transfo
appendln()
appendln("import org.jetbrains.kotlin.j2k.tree.*")
appendln()
val extends = transformerExtends?.let { " : $it<D>" } ?: ""
val extends = transformerExtends?.let { " : $it<in D>" } ?: ""
appendln("interface $transformerName<D>$extends {")
appendln("interface $transformerName<in 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
| fun <E: $name> transform$nameWithoutPrefix($argName: $name, data: D): E $generifyCall
""".trimMargin()
}
appendln()
@@ -140,10 +140,10 @@ fun genVisitors(interfaceData: List<InterfaceData>, visitorName: String, transfo
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"
val generifyCall = if (name != "JKElement") "= transform${ext!!.removePrefix("JK")}($argName, null)" else ""
"""
| fun transform$nameWithoutPrefix($arg) $generifyCall
| override fun transform$nameWithoutPrefix($arg, data: Nothing?) = transform$nameWithoutPrefix($argName)
| fun <E: $name> transform$nameWithoutPrefix($arg): E $generifyCall
| override fun <E: $name> transform$nameWithoutPrefix($arg, data: Nothing?): E = transform$nameWithoutPrefix($argName)
""".trimMargin()
}
appendln()
@@ -151,8 +151,4 @@ fun genVisitors(interfaceData: List<InterfaceData>, visitorName: String, transfo
})
}
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")
genVisitors(JK_COMMON_FILE.interfaceNames() + JK_JAVA_FILE.interfaceNames() + JK_KT_FILE.interfaceNames(), "JKVisitor", "JKTransformer")
@@ -17,58 +17,36 @@
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.JKTransformer
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
class JKJavaFieldImpl(override var type: JKTypeIdentifier,
override var name: JKNameIdentifier,
override var initializer: JKExpression?) : JKJavaField, JKElementBase() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R {
return if (visitor is JKJavaVisitor) {
visitor.visitJavaField(this, data)
}
else {
visitor.visitDeclaration(this, data)
}
}
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaField(this, data)
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D)
= listOfNotNull(type, name, initializer).forEach { it.accept(visitor, data) }
override fun <D> transformChildren(transformer: JKTransformer<D>, data: D) {
type = type.transform(transformer, data)
name = name.transform(transformer, data)
initializer = initializer?.transform(transformer, data)
}
}
class JKJavaTypeIdentifierImpl(override val typeName: String) : JKJavaTypeIdentifier, JKElementBase() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R {
return if (visitor is JKJavaVisitor) {
visitor.visitJavaTypeIdentifier(this, data)
}
else {
visitor.visitTypeIdentifier(this, data)
}
}
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaTypeIdentifier(this, data)
}
class JKJavaStringLiteralExpressionImpl(override val text: String) : JKJavaStringLiteralExpression, JKElementBase() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R {
return if (visitor is JKJavaVisitor) {
visitor.visitJavaStringLiteralExpression(this, data)
}
else {
visitor.visitLiteralExpression(this, data)
}
}
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaStringLiteralExpression(this, data)
}
class JKJavaAccessModifierImpl(override val type: JKJavaAccessModifier.AccessModifierType) : JKJavaAccessModifier, JKElementBase() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R {
return if (visitor is JKJavaVisitor) {
visitor.visitJavaAccessModifier(this, data)
}
else {
visitor.visitAccessModifier(this, data)
}
}
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaAccessModifier(this, data)
}
@@ -25,7 +25,7 @@ abstract class JKElementBase : JKElement {
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 <E : JKElement, D> transform(transformer: JKTransformer<D>, data: D): E = transformer.transformElement(this, data)
override fun <D> transformChildren(transformer: JKTransformer<D>, data: D) {}
}
@@ -25,7 +25,7 @@ interface JKElement {
fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D)
fun <D> transform(transformer: JKTransformer<D>, data: D): JKElement
fun <E: JKElement, D> transform(transformer: JKTransformer<D>, data: D): E
fun <D> transformChildren(transformer: JKTransformer<D>, data: D)
}
@@ -1,19 +0,0 @@
/*
* 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>
@@ -1,3 +0,0 @@
package org.jetbrains.kotlin.j2k.tree.visitors
interface JKJavaKtVisitor<R, D> : JKJavaVisitor<R, D>, JKKtVisitor<R, D>
@@ -1,19 +0,0 @@
/*
* 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
@@ -1,14 +0,0 @@
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)
}
@@ -1,22 +0,0 @@
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)
}
@@ -1,14 +0,0 @@
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)
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitDeclaration(javaMethod, data)
fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): R = visitLoop(javaForLoop, data)
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data)
fun visitJavaCall(javaCall: JKJavaCall, data: D): R = visitCall(javaCall, data)
fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): R = visitTypeIdentifier(javaTypeIdentifier, data)
fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): R = visitLiteralExpression(javaStringLiteralExpression, data)
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): R = visitAccessModifier(javaAccessModifier, data)
}
@@ -1,22 +0,0 @@
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)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitDeclaration(javaMethod, null)
override fun visitJavaMethod(javaMethod: JKJavaMethod, data: Nothing?) = visitJavaMethod(javaMethod)
fun visitJavaForLoop(javaForLoop: JKJavaForLoop) = visitLoop(javaForLoop, null)
override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?) = visitJavaForLoop(javaForLoop)
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression) = visitExpression(javaAssignmentExpression, null)
override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?) = visitJavaAssignmentExpression(javaAssignmentExpression)
fun visitJavaCall(javaCall: JKJavaCall) = visitCall(javaCall, null)
override fun visitJavaCall(javaCall: JKJavaCall, data: Nothing?) = visitJavaCall(javaCall)
fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier) = visitTypeIdentifier(javaTypeIdentifier, null)
override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?) = visitJavaTypeIdentifier(javaTypeIdentifier)
fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression) = visitLiteralExpression(javaStringLiteralExpression, null)
override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?) = visitJavaStringLiteralExpression(javaStringLiteralExpression)
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) = visitAccessModifier(javaAccessModifier, null)
override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?) = visitJavaAccessModifier(javaAccessModifier)
}
@@ -1,11 +0,0 @@
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)
}
@@ -1,16 +0,0 @@
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)
}
@@ -1,11 +0,0 @@
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)
fun visitKtConstructor(ktConstructor: JKKtConstructor, data: D): R = visitDeclaration(ktConstructor, data)
fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): R = visitKtConstructor(ktPrimaryConstructor, data)
fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: D): R = visitStatement(ktAssignmentStatement, data)
fun visitKtCall(ktCall: JKKtCall, data: D): R = visitCall(ktCall, data)
}
@@ -1,16 +0,0 @@
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)
override fun visitKtFun(ktFun: JKKtFun, data: Nothing?) = visitKtFun(ktFun)
fun visitKtConstructor(ktConstructor: JKKtConstructor) = visitDeclaration(ktConstructor, null)
override fun visitKtConstructor(ktConstructor: JKKtConstructor, data: Nothing?) = visitKtConstructor(ktConstructor)
fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor) = visitKtConstructor(ktPrimaryConstructor, null)
override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: Nothing?) = visitKtPrimaryConstructor(ktPrimaryConstructor)
fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement) = visitStatement(ktAssignmentStatement, null)
override fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: Nothing?) = visitKtAssignmentStatement(ktAssignmentStatement)
fun visitKtCall(ktCall: JKKtCall) = visitCall(ktCall, null)
override fun visitKtCall(ktCall: JKKtCall, data: Nothing?) = visitKtCall(ktCall)
}
@@ -2,20 +2,33 @@ 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)
interface JKTransformer<in D> {
fun <E: JKElement> transformElement(element: JKElement, data: D): E
fun <E: JKClass> transformClass(klass: JKClass, data: D): E = transformDeclaration(klass, data)
fun <E: JKStatement> transformStatement(statement: JKStatement, data: D): E = transformElement(statement, data)
fun <E: JKExpression> transformExpression(expression: JKExpression, data: D): E = transformStatement(expression, data)
fun <E: JKLoop> transformLoop(loop: JKLoop, data: D): E = transformStatement(loop, data)
fun <E: JKDeclaration> transformDeclaration(declaration: JKDeclaration, data: D): E = transformElement(declaration, data)
fun <E: JKBlock> transformBlock(block: JKBlock, data: D): E = transformElement(block, data)
fun <E: JKCall> transformCall(call: JKCall, data: D): E = transformExpression(call, data)
fun <E: JKIdentifier> transformIdentifier(identifier: JKIdentifier, data: D): E = transformElement(identifier, data)
fun <E: JKTypeIdentifier> transformTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: D): E = transformIdentifier(typeIdentifier, data)
fun <E: JKNameIdentifier> transformNameIdentifier(nameIdentifier: JKNameIdentifier, data: D): E = transformIdentifier(nameIdentifier, data)
fun <E: JKLiteralExpression> transformLiteralExpression(literalExpression: JKLiteralExpression, data: D): E = transformExpression(literalExpression, data)
fun <E: JKModifierList> transformModifierList(modifierList: JKModifierList, data: D): E = transformElement(modifierList, data)
fun <E: JKModifier> transformModifier(modifier: JKModifier, data: D): E = transformElement(modifier, data)
fun <E: JKAccessModifier> transformAccessModifier(accessModifier: JKAccessModifier, data: D): E = transformModifier(accessModifier, data)
fun <E: JKJavaField> transformJavaField(javaField: JKJavaField, data: D): E = transformDeclaration(javaField, data)
fun <E: JKJavaMethod> transformJavaMethod(javaMethod: JKJavaMethod, data: D): E = transformDeclaration(javaMethod, data)
fun <E: JKJavaForLoop> transformJavaForLoop(javaForLoop: JKJavaForLoop, data: D): E = transformLoop(javaForLoop, data)
fun <E: JKJavaAssignmentExpression> transformJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): E = transformExpression(javaAssignmentExpression, data)
fun <E: JKJavaCall> transformJavaCall(javaCall: JKJavaCall, data: D): E = transformCall(javaCall, data)
fun <E: JKJavaTypeIdentifier> transformJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): E = transformTypeIdentifier(javaTypeIdentifier, data)
fun <E: JKJavaStringLiteralExpression> transformJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): E = transformLiteralExpression(javaStringLiteralExpression, data)
fun <E: JKJavaAccessModifier> transformJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): E = transformAccessModifier(javaAccessModifier, data)
fun <E: JKKtFun> transformKtFun(ktFun: JKKtFun, data: D): E = transformDeclaration(ktFun, data)
fun <E: JKKtConstructor> transformKtConstructor(ktConstructor: JKKtConstructor, data: D): E = transformDeclaration(ktConstructor, data)
fun <E: JKKtPrimaryConstructor> transformKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): E = transformKtConstructor(ktPrimaryConstructor, data)
fun <E: JKKtAssignmentStatement> transformKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: D): E = transformStatement(ktAssignmentStatement, data)
fun <E: JKKtCall> transformKtCall(ktCall: JKKtCall, data: D): E = transformCall(ktCall, data)
}
@@ -3,34 +3,60 @@ 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)
fun <E: JKElement> transformElement(element: JKElement): E
override fun <E: JKElement> transformElement(element: JKElement, data: Nothing?): E = transformElement(element)
fun <E: JKClass> transformClass(klass: JKClass): E = transformDeclaration(klass, null)
override fun <E: JKClass> transformClass(klass: JKClass, data: Nothing?): E = transformClass(klass)
fun <E: JKStatement> transformStatement(statement: JKStatement): E = transformElement(statement, null)
override fun <E: JKStatement> transformStatement(statement: JKStatement, data: Nothing?): E = transformStatement(statement)
fun <E: JKExpression> transformExpression(expression: JKExpression): E = transformStatement(expression, null)
override fun <E: JKExpression> transformExpression(expression: JKExpression, data: Nothing?): E = transformExpression(expression)
fun <E: JKLoop> transformLoop(loop: JKLoop): E = transformStatement(loop, null)
override fun <E: JKLoop> transformLoop(loop: JKLoop, data: Nothing?): E = transformLoop(loop)
fun <E: JKDeclaration> transformDeclaration(declaration: JKDeclaration): E = transformElement(declaration, null)
override fun <E: JKDeclaration> transformDeclaration(declaration: JKDeclaration, data: Nothing?): E = transformDeclaration(declaration)
fun <E: JKBlock> transformBlock(block: JKBlock): E = transformElement(block, null)
override fun <E: JKBlock> transformBlock(block: JKBlock, data: Nothing?): E = transformBlock(block)
fun <E: JKCall> transformCall(call: JKCall): E = transformExpression(call, null)
override fun <E: JKCall> transformCall(call: JKCall, data: Nothing?): E = transformCall(call)
fun <E: JKIdentifier> transformIdentifier(identifier: JKIdentifier): E = transformElement(identifier, null)
override fun <E: JKIdentifier> transformIdentifier(identifier: JKIdentifier, data: Nothing?): E = transformIdentifier(identifier)
fun <E: JKTypeIdentifier> transformTypeIdentifier(typeIdentifier: JKTypeIdentifier): E = transformIdentifier(typeIdentifier, null)
override fun <E: JKTypeIdentifier> transformTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: Nothing?): E = transformTypeIdentifier(typeIdentifier)
fun <E: JKNameIdentifier> transformNameIdentifier(nameIdentifier: JKNameIdentifier): E = transformIdentifier(nameIdentifier, null)
override fun <E: JKNameIdentifier> transformNameIdentifier(nameIdentifier: JKNameIdentifier, data: Nothing?): E = transformNameIdentifier(nameIdentifier)
fun <E: JKLiteralExpression> transformLiteralExpression(literalExpression: JKLiteralExpression): E = transformExpression(literalExpression, null)
override fun <E: JKLiteralExpression> transformLiteralExpression(literalExpression: JKLiteralExpression, data: Nothing?): E = transformLiteralExpression(literalExpression)
fun <E: JKModifierList> transformModifierList(modifierList: JKModifierList): E = transformElement(modifierList, null)
override fun <E: JKModifierList> transformModifierList(modifierList: JKModifierList, data: Nothing?): E = transformModifierList(modifierList)
fun <E: JKModifier> transformModifier(modifier: JKModifier): E = transformElement(modifier, null)
override fun <E: JKModifier> transformModifier(modifier: JKModifier, data: Nothing?): E = transformModifier(modifier)
fun <E: JKAccessModifier> transformAccessModifier(accessModifier: JKAccessModifier): E = transformModifier(accessModifier, null)
override fun <E: JKAccessModifier> transformAccessModifier(accessModifier: JKAccessModifier, data: Nothing?): E = transformAccessModifier(accessModifier)
fun <E: JKJavaField> transformJavaField(javaField: JKJavaField): E = transformDeclaration(javaField, null)
override fun <E: JKJavaField> transformJavaField(javaField: JKJavaField, data: Nothing?): E = transformJavaField(javaField)
fun <E: JKJavaMethod> transformJavaMethod(javaMethod: JKJavaMethod): E = transformDeclaration(javaMethod, null)
override fun <E: JKJavaMethod> transformJavaMethod(javaMethod: JKJavaMethod, data: Nothing?): E = transformJavaMethod(javaMethod)
fun <E: JKJavaForLoop> transformJavaForLoop(javaForLoop: JKJavaForLoop): E = transformLoop(javaForLoop, null)
override fun <E: JKJavaForLoop> transformJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?): E = transformJavaForLoop(javaForLoop)
fun <E: JKJavaAssignmentExpression> transformJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression): E = transformExpression(javaAssignmentExpression, null)
override fun <E: JKJavaAssignmentExpression> transformJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?): E = transformJavaAssignmentExpression(javaAssignmentExpression)
fun <E: JKJavaCall> transformJavaCall(javaCall: JKJavaCall): E = transformCall(javaCall, null)
override fun <E: JKJavaCall> transformJavaCall(javaCall: JKJavaCall, data: Nothing?): E = transformJavaCall(javaCall)
fun <E: JKJavaTypeIdentifier> transformJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier): E = transformTypeIdentifier(javaTypeIdentifier, null)
override fun <E: JKJavaTypeIdentifier> transformJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?): E = transformJavaTypeIdentifier(javaTypeIdentifier)
fun <E: JKJavaStringLiteralExpression> transformJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression): E = transformLiteralExpression(javaStringLiteralExpression, null)
override fun <E: JKJavaStringLiteralExpression> transformJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?): E = transformJavaStringLiteralExpression(javaStringLiteralExpression)
fun <E: JKJavaAccessModifier> transformJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier): E = transformAccessModifier(javaAccessModifier, null)
override fun <E: JKJavaAccessModifier> transformJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?): E = transformJavaAccessModifier(javaAccessModifier)
fun <E: JKKtFun> transformKtFun(ktFun: JKKtFun): E = transformDeclaration(ktFun, null)
override fun <E: JKKtFun> transformKtFun(ktFun: JKKtFun, data: Nothing?): E = transformKtFun(ktFun)
fun <E: JKKtConstructor> transformKtConstructor(ktConstructor: JKKtConstructor): E = transformDeclaration(ktConstructor, null)
override fun <E: JKKtConstructor> transformKtConstructor(ktConstructor: JKKtConstructor, data: Nothing?): E = transformKtConstructor(ktConstructor)
fun <E: JKKtPrimaryConstructor> transformKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor): E = transformKtConstructor(ktPrimaryConstructor, null)
override fun <E: JKKtPrimaryConstructor> transformKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: Nothing?): E = transformKtPrimaryConstructor(ktPrimaryConstructor)
fun <E: JKKtAssignmentStatement> transformKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement): E = transformStatement(ktAssignmentStatement, null)
override fun <E: JKKtAssignmentStatement> transformKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: Nothing?): E = transformKtAssignmentStatement(ktAssignmentStatement)
fun <E: JKKtCall> transformKtCall(ktCall: JKKtCall): E = transformCall(ktCall, null)
override fun <E: JKKtCall> transformKtCall(ktCall: JKKtCall, data: Nothing?): E = transformKtCall(ktCall)
}
@@ -2,7 +2,7 @@ package org.jetbrains.kotlin.j2k.tree.visitors
import org.jetbrains.kotlin.j2k.tree.*
interface JKVisitor<R, D> {
interface JKVisitor<out R, in 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)
@@ -18,4 +18,17 @@ interface JKVisitor<R, D> {
fun visitModifierList(modifierList: JKModifierList, data: D): R = visitElement(modifierList, data)
fun visitModifier(modifier: JKModifier, data: D): R = visitElement(modifier, data)
fun visitAccessModifier(accessModifier: JKAccessModifier, data: D): R = visitModifier(accessModifier, data)
fun visitJavaField(javaField: JKJavaField, data: D): R = visitDeclaration(javaField, data)
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitDeclaration(javaMethod, data)
fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): R = visitLoop(javaForLoop, data)
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data)
fun visitJavaCall(javaCall: JKJavaCall, data: D): R = visitCall(javaCall, data)
fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): R = visitTypeIdentifier(javaTypeIdentifier, data)
fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): R = visitLiteralExpression(javaStringLiteralExpression, data)
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): R = visitAccessModifier(javaAccessModifier, data)
fun visitKtFun(ktFun: JKKtFun, data: D): R = visitDeclaration(ktFun, data)
fun visitKtConstructor(ktConstructor: JKKtConstructor, data: D): R = visitDeclaration(ktConstructor, data)
fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): R = visitKtConstructor(ktPrimaryConstructor, data)
fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: D): R = visitStatement(ktAssignmentStatement, data)
fun visitKtCall(ktCall: JKKtCall, data: D): R = visitCall(ktCall, data)
}
@@ -33,4 +33,30 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitModifier(modifier: JKModifier, data: Nothing?) = visitModifier(modifier)
fun visitAccessModifier(accessModifier: JKAccessModifier) = visitModifier(accessModifier, null)
override fun visitAccessModifier(accessModifier: JKAccessModifier, data: Nothing?) = visitAccessModifier(accessModifier)
fun visitJavaField(javaField: JKJavaField) = visitDeclaration(javaField, null)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitDeclaration(javaMethod, null)
override fun visitJavaMethod(javaMethod: JKJavaMethod, data: Nothing?) = visitJavaMethod(javaMethod)
fun visitJavaForLoop(javaForLoop: JKJavaForLoop) = visitLoop(javaForLoop, null)
override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?) = visitJavaForLoop(javaForLoop)
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression) = visitExpression(javaAssignmentExpression, null)
override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?) = visitJavaAssignmentExpression(javaAssignmentExpression)
fun visitJavaCall(javaCall: JKJavaCall) = visitCall(javaCall, null)
override fun visitJavaCall(javaCall: JKJavaCall, data: Nothing?) = visitJavaCall(javaCall)
fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier) = visitTypeIdentifier(javaTypeIdentifier, null)
override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?) = visitJavaTypeIdentifier(javaTypeIdentifier)
fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression) = visitLiteralExpression(javaStringLiteralExpression, null)
override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?) = visitJavaStringLiteralExpression(javaStringLiteralExpression)
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) = visitAccessModifier(javaAccessModifier, null)
override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?) = visitJavaAccessModifier(javaAccessModifier)
fun visitKtFun(ktFun: JKKtFun) = visitDeclaration(ktFun, null)
override fun visitKtFun(ktFun: JKKtFun, data: Nothing?) = visitKtFun(ktFun)
fun visitKtConstructor(ktConstructor: JKKtConstructor) = visitDeclaration(ktConstructor, null)
override fun visitKtConstructor(ktConstructor: JKKtConstructor, data: Nothing?) = visitKtConstructor(ktConstructor)
fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor) = visitKtConstructor(ktPrimaryConstructor, null)
override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: Nothing?) = visitKtPrimaryConstructor(ktPrimaryConstructor)
fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement) = visitStatement(ktAssignmentStatement, null)
override fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: Nothing?) = visitKtAssignmentStatement(ktAssignmentStatement)
fun visitKtCall(ktCall: JKKtCall) = visitCall(ktCall, null)
override fun visitKtCall(ktCall: JKKtCall, data: Nothing?) = visitKtCall(ktCall)
}