New J2K: References base done.
This commit is contained in:
@@ -23,14 +23,40 @@ import com.intellij.psi.impl.source.tree.java.PsiLiteralExpressionImpl
|
||||
import com.intellij.psi.impl.source.tree.java.PsiNewExpressionImpl
|
||||
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.conveersionCache.JKMultiverseClass
|
||||
import org.jetbrains.kotlin.j2k.tree.conveersionCache.ReferenceTargetProvider
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.*
|
||||
import java.util.*
|
||||
|
||||
|
||||
class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
override val resolveCache: Map<JKElement, PsiElement>
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val conversionCache: Map<PsiElement, JKElement>
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override fun resolveClassReference(clazz: PsiClass): JKClass {
|
||||
val name = clazz.qualifiedName ?: TODO()
|
||||
return universe[name] ?: multiverse[name] ?: run {
|
||||
val clazz = JKMultiverseClass(JKNameIdentifierImpl(name), mutableListOf(), JKClass.ClassKind.CLASS, JKModifierListImpl())
|
||||
multiverse[name] = clazz
|
||||
clazz
|
||||
}
|
||||
}
|
||||
|
||||
override fun resolveClassReference(identifier: String): JKClass {
|
||||
return universe[identifier] ?: multiverse[identifier] ?: run {
|
||||
val clazz = JKMultiverseClass(JKNameIdentifierImpl(identifier), mutableListOf(), JKClass.ClassKind.CLASS, JKModifierListImpl())
|
||||
multiverse[identifier] = clazz
|
||||
clazz
|
||||
}
|
||||
}
|
||||
|
||||
override fun putUniverseClass(clazz: JKClass) {
|
||||
universe[clazz.name.name] = clazz
|
||||
}
|
||||
|
||||
override fun putMultiverseClass(clazz: JKMultiverseClass) {
|
||||
multiverse[clazz.name.name] = clazz
|
||||
}
|
||||
|
||||
private val universe = mutableMapOf<String, JKClass>()
|
||||
private val multiverse = mutableMapOf<String, JKMultiverseClass>()
|
||||
|
||||
private val expressionTreeMapper = ExpressionTreeMapper()
|
||||
|
||||
@@ -38,8 +64,6 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
|
||||
private val modifierMapper = ModifierMapper()
|
||||
|
||||
private val javaToJKTreeBuilder = this
|
||||
|
||||
private inner class ExpressionTreeMapper {
|
||||
fun PsiExpression.toJK(): JKExpression {
|
||||
when (this) {
|
||||
@@ -107,8 +131,9 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
|
||||
fun PsiMethodCallExpression.toJK(): JKExpression {
|
||||
val method = methodExpression as PsiReferenceExpressionImpl
|
||||
val identifier = (method.referenceNameElement as PsiIdentifier).convertMethodReference()
|
||||
val call = JKJavaMethodCallExpressionImpl(identifier, argumentList.toJK())
|
||||
|
||||
val identifier = method.resolve().convertReference()
|
||||
val call = JKJavaMethodCallExpressionImpl(identifier as JKMethodReference, argumentList.toJK())
|
||||
return if (method.findChildByRole(ChildRole.DOT) != null) {
|
||||
JKQualifiedExpressionImpl((method.qualifier as PsiExpression).toJK(), JKJavaQualificationIdentifierImpl.DOT, call)
|
||||
}
|
||||
@@ -119,7 +144,7 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
|
||||
fun PsiReferenceExpression.toJK(): JKExpression {
|
||||
val impl = this as PsiReferenceExpressionImpl
|
||||
val identifier = (impl.referenceNameElement as PsiIdentifier).convertFieldReference()
|
||||
val identifier = impl.resolve().convertReference()
|
||||
val access = JKJavaFieldAccessExpressionImpl(identifier)
|
||||
return if (impl.findChildByRole(ChildRole.DOT) != null) {
|
||||
JKQualifiedExpressionImpl((impl.qualifier as PsiExpression).toJK(), JKJavaQualificationIdentifierImpl.DOT, access)
|
||||
@@ -154,7 +179,7 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
return JKJavaNewEmptyArrayImpl(dimensions.map { it?.toJK() })
|
||||
}
|
||||
}
|
||||
return JKJavaNewExpressionImpl((classReference as PsiIdentifier).convertType(), argumentList.toJK())
|
||||
return JKJavaNewExpressionImpl(classReference?.resolve().convertReference() as JKClassReference, argumentList.toJK())
|
||||
}
|
||||
|
||||
fun PsiArrayAccessExpression.toJK(): JKExpression {
|
||||
@@ -173,31 +198,33 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
return JKExpressionListImpl(this?.expressions?.map { it.toJK() }?.toTypedArray() ?: emptyArray())
|
||||
}
|
||||
|
||||
fun PsiIdentifier.toJK(): JKNameIdentifier {
|
||||
return JKNameIdentifierImpl(this.text)
|
||||
fun PsiElement?.convertReference(): JKReference = when(this){
|
||||
is PsiMethod -> convertMethodReference()
|
||||
is PsiField -> convertFieldReference()
|
||||
is PsiClass -> convertType()
|
||||
else -> throw Exception("Invalid PSI")
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertMethodReference(): JKJavaMethodReference {
|
||||
return JKJavaMethodReferenceImpl(this.toJK(), javaToJKTreeBuilder)
|
||||
fun PsiMethod.convertMethodReference(): JKJavaMethodReference {
|
||||
val clazz = this@JavaToJKTreeBuilder.resolveClassReference(containingClass ?: TODO())
|
||||
return JKMethodReferenceImpl(clazz, this@JavaToJKTreeBuilder.resolveMethodReference(clazz, this))
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertFieldReference(): JKJavaFieldReference {
|
||||
return JKJavaFieldReferenceImpl(this.toJK(), javaToJKTreeBuilder)
|
||||
fun PsiField.convertFieldReference(): JKJavaFieldReference {
|
||||
val clazz = this@JavaToJKTreeBuilder.resolveClassReference(containingClass ?: TODO())
|
||||
return JKFieldReferenceImpl(clazz, this@JavaToJKTreeBuilder.resolveFieldReference(clazz, this))
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertType(): JKJavaClassReference {
|
||||
return JKJavaClassReferenceImpl(this.toJK(), javaToJKTreeBuilder)
|
||||
fun PsiClass.convertType(): JKJavaClassReference {
|
||||
return JKClassReferenceImpl(this@JavaToJKTreeBuilder.resolveClassReference(this))
|
||||
}
|
||||
|
||||
fun PsiTypeElement.toJK(): JKType? {
|
||||
return innermostComponentReferenceElement?.convertType()
|
||||
}
|
||||
|
||||
|
||||
fun PsiJavaCodeReferenceElement.convertType(): JKType {
|
||||
val classReference = JKJavaClassReferenceImpl(
|
||||
JKNameIdentifierImpl(this.referenceName ?: throw RuntimeException("Can't be null: referenceName")),
|
||||
javaToJKTreeBuilder)
|
||||
val classReference = JKClassReferenceImpl(this@JavaToJKTreeBuilder.resolveClassReference(this.resolve() as? PsiClass ?: TODO()))
|
||||
val typeArguments = ArrayList<JKType>()
|
||||
parameterList?.typeParameterElements?.forEach { it ->
|
||||
kotlin.run {
|
||||
@@ -263,11 +290,15 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
}
|
||||
|
||||
fun PsiCodeBlock.toJK(): JKBlock {
|
||||
//TODO block mapping
|
||||
return JKBlockImpl(listOf(JKStringLiteralExpressionImpl("")))
|
||||
return JKBlockImpl(statements.map { it.toJK() })
|
||||
}
|
||||
|
||||
|
||||
fun PsiStatement.toJK(): JKStatement {
|
||||
if (this is PsiExpressionStatement) {
|
||||
return JKExpressionStatementImpl(with(expressionTreeMapper) { expression.toJK() })
|
||||
}
|
||||
TODO()
|
||||
}
|
||||
}
|
||||
|
||||
private inner class ModifierMapper {
|
||||
@@ -313,6 +344,10 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider {
|
||||
resultElement = with(declarationMapper) { field.toJK() }
|
||||
}
|
||||
|
||||
override fun visitMethod(method: PsiMethod) {
|
||||
resultElement = with(declarationMapper) { method.toJK() }
|
||||
}
|
||||
|
||||
override fun visitFile(file: PsiFile) {
|
||||
file.acceptChildren(this)
|
||||
}
|
||||
|
||||
@@ -38,6 +38,62 @@ private class DebugTreePrinter : JKVisitorVoid {
|
||||
override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) {
|
||||
printer.println(javaAccessModifier.classNameWithoutJK(), "(", javaAccessModifier.type, ")")
|
||||
}
|
||||
|
||||
override fun visitJavaMethod(javaMethod: JKJavaMethod) {
|
||||
printer.println(javaMethod.classNameWithoutJK(), " [")
|
||||
printer.indented {
|
||||
javaMethod.block?.accept(this, null)
|
||||
javaMethod.modifierList.accept(this, null)
|
||||
}
|
||||
printer.println("]")
|
||||
}
|
||||
|
||||
override fun visitExpressionStatement(expressionStatement: JKExpressionStatement) {
|
||||
printer.println(expressionStatement.classNameWithoutJK(), " [")
|
||||
printer.indented {
|
||||
expressionStatement.acceptChildren(this, null)
|
||||
}
|
||||
printer.println("]")
|
||||
}
|
||||
|
||||
override fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression) {
|
||||
printer.println(qualifiedExpression.classNameWithoutJK(), " [")
|
||||
printer.indented {
|
||||
qualifiedExpression.acceptChildren(this, null)
|
||||
}
|
||||
printer.println("]")
|
||||
}
|
||||
|
||||
override fun visitBlock(block: JKBlock) {
|
||||
printer.println(block.classNameWithoutJK(), " [")
|
||||
printer.indented {
|
||||
block.acceptChildren(this, null)
|
||||
}
|
||||
printer.println("]")
|
||||
}
|
||||
|
||||
override fun visitMethodReference(methodReference: JKMethodReference) {
|
||||
printer.println(methodReference.classNameWithoutJK())
|
||||
printer.println(methodReference.containerClass.name.name, "@", methodReference.target.name.name)
|
||||
}
|
||||
|
||||
override fun visitFieldReference(fieldReference: JKFieldReference) {
|
||||
printer.println(fieldReference.classNameWithoutJK())
|
||||
printer.println(fieldReference.containerClass.name.name, "@", fieldReference.target.name.name)
|
||||
}
|
||||
|
||||
override fun visitClassReference(classReference: JKClassReference) {
|
||||
printer.println(classReference.classNameWithoutJK())
|
||||
printer.println(classReference.target.name.name)
|
||||
}
|
||||
|
||||
override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression) {
|
||||
printer.println(javaStringLiteralExpression.classNameWithoutJK(), " \"")
|
||||
printer.indented {
|
||||
printer.println(javaStringLiteralExpression.text)
|
||||
}
|
||||
printer.println("\"")
|
||||
}
|
||||
}
|
||||
|
||||
private fun Any.classNameWithoutJK(): String = this.javaClass.simpleName.removePrefix("JK")
|
||||
@@ -49,5 +105,4 @@ private inline fun Printer.indented(block: () -> Unit) {
|
||||
}
|
||||
|
||||
|
||||
fun JKElement.prettyDebugPrintTree(): String
|
||||
= DebugTreePrinter().apply { accept(this, null) }.stringBuilder.toString()
|
||||
fun JKElement.prettyDebugPrintTree(): String = DebugTreePrinter().apply { accept(this, null) }.stringBuilder.toString()
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2010-2018 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.conveersionCache
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.JKDeclaration
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
interface JKMultiverseDeclaration : JKDeclaration{
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun <R : JKElement, D> transform(transformer: JKTransformer<D>, data: D): R {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: JKTransformer<D>, data: D) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2010-2018 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.conveersionCache
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKElementBase
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKJavaTypeIdentifierImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKModifierListImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKReferenceType
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
|
||||
class JKMultiverseField(override var name: JKNameIdentifier) : JKMultiverseDeclaration, JKJavaField {
|
||||
override var initializer: JKExpression? = null
|
||||
override var modifierList: JKModifierList = JKModifierListImpl()
|
||||
override var type: JKTypeIdentifier = JKJavaTypeIdentifierImpl("") //TODO
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
class JKMultiverseProperty : JKMultiverseDeclaration {
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
class JKMultiverseMethod(override var name: JKNameIdentifier) : JKMultiverseDeclaration, JKMethod {
|
||||
override var modifierList: JKModifierList = JKModifierListImpl()
|
||||
override var block: JKBlock? = null
|
||||
override var valueArguments: List<JKValueArgument> = listOf()
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
class JKMultiverseClass(override var name: JKNameIdentifier, override var declarations: List<JKDeclaration>,
|
||||
override var classKind: JKClass.ClassKind, override var modifierList: JKModifierList) : JKClass, JKMultiverseDeclaration {
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
class JKMultiverseClassReferenceImpl(override val target: JKClass) : JKJavaClassReference, JKElementBase() {
|
||||
override val referenceType: JKReferenceType = JKReferenceType.M2U
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaClassReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2018 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.conveersionCache
|
||||
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiField
|
||||
import com.intellij.psi.PsiMethod
|
||||
import org.jetbrains.kotlin.j2k.tree.JKClass
|
||||
import org.jetbrains.kotlin.j2k.tree.JKJavaField
|
||||
import org.jetbrains.kotlin.j2k.tree.JKMethod
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKNameIdentifierImpl
|
||||
|
||||
interface ReferenceTargetProvider {
|
||||
fun resolveClassReference(identifier: String): JKClass
|
||||
fun resolveClassReference(clazz: PsiClass): JKClass
|
||||
fun putUniverseClass(clazz: JKClass)
|
||||
fun putMultiverseClass(clazz: JKMultiverseClass)
|
||||
fun resolveMethodReference(clazz: JKClass, method: PsiMethod): JKMethod {
|
||||
return clazz.declarations.asSequence().filter { it is JKMethod && it.name.name == method.name }.firstOrNull() as JKMethod? ?: run {
|
||||
val met = JKMultiverseMethod(JKNameIdentifierImpl(method.name))
|
||||
clazz.declarations += met
|
||||
met
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun resolveFieldReference(clazz: JKClass, field: PsiField): JKJavaField {
|
||||
return clazz.declarations.asSequence().filter { it is JKJavaField && it.name.name == field.name }.firstOrNull() as JKJavaField?
|
||||
?: run {
|
||||
val field = JKMultiverseField(JKNameIdentifierImpl(field.name!!))
|
||||
clazz.declarations += field
|
||||
field
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.tree.impl
|
||||
|
||||
import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
@@ -25,6 +24,8 @@ class JKJavaFieldImpl(override var modifierList: JKModifierList,
|
||||
override var type: JKTypeIdentifier,
|
||||
override var name: JKNameIdentifier,
|
||||
override var initializer: JKExpression?) : JKJavaField, JKElementBase() {
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaField(this, data)
|
||||
|
||||
@@ -60,6 +61,8 @@ class JKJavaMethodImpl(override var modifierList: JKModifierList,
|
||||
override var name: JKNameIdentifier,
|
||||
override var valueArguments: List<JKValueArgument>,
|
||||
override var block: JKBlock?) : JKJavaMethod, JKElementBase() {
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethod(this, data)
|
||||
override fun <D> transformChildren(transformer: JKTransformer<D>, data: D) {
|
||||
@@ -98,7 +101,7 @@ class JKJavaMethodCallExpressionImpl(override var identifier: JKMethodReference,
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaFieldAccessExpressionImpl(override var identifier: JKFieldReference) : JKJavaFieldAccessExpression, JKElementBase() {
|
||||
class JKJavaFieldAccessExpressionImpl(override var identifier: JKReference) : JKJavaFieldAccessExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaFieldAccessExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
@@ -124,58 +127,7 @@ class JKJavaNewExpressionImpl(override var identifier: JKClassReference,
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaMethodReferenceImpl(override val nameIdentifier: JKNameIdentifier, override val targetProvider: ReferenceTargetProvider) : JKJavaMethodReference, JKElementBase() {
|
||||
override fun resolve(): JKElement {
|
||||
val resolveCache = targetProvider.resolveCache
|
||||
val conversionCache = targetProvider.conversionCache
|
||||
val psiIdentifier = resolveCache[this] as PsiIdentifier
|
||||
val methodReferenceExpression = psiIdentifier.parent as PsiMethodReferenceExpression
|
||||
val psiMethod = methodReferenceExpression.resolve() as PsiMethod
|
||||
return conversionCache[psiMethod] ?: throw Exception("Resolved to null")
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethodReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaFieldReferenceImpl(override val nameIdentifier: JKNameIdentifier, override val targetProvider: ReferenceTargetProvider) : JKJavaFieldReference, JKElementBase() {
|
||||
override fun resolve(): JKElement {
|
||||
val resolveCache = targetProvider.resolveCache
|
||||
val conversionCache = targetProvider.conversionCache
|
||||
val psiIdentifier = resolveCache[this] as PsiIdentifier
|
||||
val psiReferenceExpression = psiIdentifier.parent as PsiReferenceExpression
|
||||
val psiField = psiReferenceExpression.resolve() as PsiField
|
||||
return conversionCache[psiField] ?: throw Exception("Resolved to null")
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaFieldReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaClassReferenceImpl(override val nameIdentifier: JKNameIdentifier, override val targetProvider: ReferenceTargetProvider) : JKJavaClassReference, JKElementBase() {
|
||||
override fun resolve(): JKElement {
|
||||
val resolveCache = targetProvider.resolveCache
|
||||
val conversionCache = targetProvider.conversionCache
|
||||
val psiIdentifier = resolveCache[this] as PsiIdentifier
|
||||
val codeReferenceElement = psiIdentifier.parent as PsiJavaCodeReferenceElement
|
||||
val psiClass = codeReferenceElement.resolve() as PsiClass
|
||||
return conversionCache[psiClass] ?: throw Exception("Resolved to null")
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaClassReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaNewEmptyArrayImpl(override var initializer: List<JKLiteralExpression?>) : JKJavaNewEmptyArray, JKElementBase() {
|
||||
class JKJavaNewEmptyArrayImpl(override val initializer: List<JKLiteralExpression?>) : JKJavaNewEmptyArray, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaNewEmptyArray(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
@@ -16,10 +16,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.tree.impl
|
||||
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiJavaCodeReferenceElement
|
||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.conveersionCache.JKMultiverseClass
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
@@ -35,6 +34,8 @@ abstract class JKElementBase : JKElement {
|
||||
|
||||
|
||||
class JKClassImpl(override var modifierList: JKModifierList, override var name: JKNameIdentifier, override var classKind: JKClass.ClassKind) : JKClass, JKElementBase() {
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
override var declarations: List<JKDeclaration> = mutableListOf()
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitClass(this, data)
|
||||
@@ -83,6 +84,9 @@ class JKBlockImpl(override var statements: List<JKStatement>) : JKBlock, JKEleme
|
||||
override fun <D> transformChildren(transformer: JKTransformer<D>, data: D) {
|
||||
statements = statements.map { it.transform<JKStatement, D>(transformer, data) }
|
||||
}
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
statements.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
}
|
||||
|
||||
class JKStringLiteralExpressionImpl(override val text: String) : JKStringLiteralExpression, JKElementBase() {
|
||||
@@ -161,6 +165,13 @@ class JKQualifiedExpressionImpl(override var receiver: JKExpression, override va
|
||||
}
|
||||
}
|
||||
|
||||
class JKExpressionStatementImpl(override val expression: JKExpression) : JKExpressionStatement, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitExpressionStatement(this, data)
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
expression.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
|
||||
class JKArrayAccessExpressionImpl(override var expression: JKExpression, override var indexExpression: JKExpression?) : JKArrayAccessExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitArrayAccessExpression(this, data)
|
||||
|
||||
@@ -203,10 +214,45 @@ class JKTypeCastExpressionImpl(override var expression: JKExpression?, override
|
||||
|
||||
class JKTypeReferenceImpl(override val parameters: List<JKType>) : JKType, JKElementBase() {
|
||||
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitType(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
sealed class JKReferenceType {
|
||||
object U2U : JKReferenceType()
|
||||
object U2M : JKReferenceType()
|
||||
object M2U : JKReferenceType()
|
||||
}
|
||||
|
||||
class JKFieldReferenceImpl(override val containerClass: JKClass, override val target: JKJavaField) : JKJavaFieldReference, JKElementBase() {
|
||||
override val referenceType: JKReferenceType = if (containerClass is JKMultiverseClass) JKReferenceType.U2M else JKReferenceType.U2U
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaFieldReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class JKClassReferenceImpl(override val target: JKClass) : JKJavaClassReference, JKElementBase() {
|
||||
override val referenceType: JKReferenceType = if (target is JKMultiverseClass) JKReferenceType.U2M else JKReferenceType.U2U
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaClassReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class JKMethodReferenceImpl(override val containerClass: JKClass, override val target: JKMethod) : JKJavaMethodReference, JKElementBase() {
|
||||
override val referenceType: JKReferenceType = if (containerClass is JKMultiverseClass) JKReferenceType.U2M else JKReferenceType.U2U
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethodReference(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -51,5 +51,6 @@ class JKKtFunctionImpl(override var returnType: JKTypeIdentifier,
|
||||
override var valueArguments: List<JKValueArgument>,
|
||||
override var block: JKBlock?,
|
||||
override var modifierList: JKModifierList) : JKElementBase(), JKKtFunction {
|
||||
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
@@ -22,12 +22,7 @@ interface JKJavaField : JKDeclaration, JKModifierListOwner {
|
||||
val initializer: JKExpression?
|
||||
}
|
||||
|
||||
interface JKJavaMethod : JKDeclaration {
|
||||
val modifierList: JKModifierList
|
||||
val name: JKNameIdentifier
|
||||
val valueArguments: List<JKValueArgument>
|
||||
val block: JKBlock?
|
||||
}
|
||||
interface JKJavaMethod : JKMethod
|
||||
|
||||
interface JKJavaForLoop : JKLoop
|
||||
|
||||
@@ -87,7 +82,3 @@ interface JKJavaNewEmptyArray : JKExpression {
|
||||
interface JKJavaNewArray : JKExpression {
|
||||
val initializer: List<JKExpression>
|
||||
}
|
||||
|
||||
interface JKJavaExternalReference : JKExternalReference {
|
||||
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKReferenceType
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
@@ -73,7 +73,7 @@ interface JKMethodCallExpression : JKExpression {
|
||||
}
|
||||
|
||||
interface JKFieldAccessExpression : JKExpression {
|
||||
val identifier: JKFieldReference
|
||||
val identifier: JKReference
|
||||
}
|
||||
|
||||
interface JKArrayAccessExpression : JKExpression {
|
||||
@@ -95,24 +95,22 @@ interface JKExpressionList : JKElement {
|
||||
}
|
||||
|
||||
interface JKReference : JKElement {
|
||||
val targetProvider:ReferenceTargetProvider
|
||||
fun resolve(): JKElement
|
||||
}
|
||||
|
||||
interface JKExternalReference {
|
||||
fun resolve(): PsiElement
|
||||
val target: JKReferenceTarget
|
||||
val referenceType: JKReferenceType
|
||||
}
|
||||
|
||||
interface JKMethodReference : JKReference {
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
val containerClass: JKClass
|
||||
override val target: JKMethod
|
||||
}
|
||||
|
||||
interface JKFieldReference : JKReference {
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
val containerClass: JKClass
|
||||
override val target: JKJavaField
|
||||
}
|
||||
|
||||
interface JKClassReference : JKReference {
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
override val target: JKClass
|
||||
}
|
||||
|
||||
interface JKType : JKElement {
|
||||
@@ -121,23 +119,6 @@ interface JKType : JKElement {
|
||||
val parameters: List<JKType>
|
||||
}
|
||||
|
||||
interface JKExternalMethodReference : JKExternalReference {
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
}
|
||||
|
||||
interface JKExternalFieldReference : JKExternalReference {
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
}
|
||||
|
||||
interface JKExternalClassReference : JKExternalReference {
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
}
|
||||
|
||||
interface JKExternalTypeReference : JKExternalReference {
|
||||
val classReference: JKClassReference
|
||||
val nullability: Nullability
|
||||
val parameters: List<JKType>
|
||||
}
|
||||
|
||||
interface JKOperatorIdentifier : JKIdentifier
|
||||
|
||||
@@ -145,7 +126,7 @@ interface JKQualificationIdentifier : JKIdentifier
|
||||
|
||||
interface JKLoop : JKStatement
|
||||
|
||||
interface JKDeclaration : JKElement
|
||||
interface JKDeclaration : JKElement, JKReferenceTarget
|
||||
|
||||
interface JKBlock : JKElement {
|
||||
val statements: List<JKStatement>
|
||||
@@ -180,7 +161,13 @@ interface JKStringLiteralExpression : JKLiteralExpression {
|
||||
|
||||
interface JKModalityModifier : JKModifier
|
||||
|
||||
interface ReferenceTargetProvider {
|
||||
val resolveCache: Map<JKElement, PsiElement>
|
||||
val conversionCache: Map<PsiElement, JKElement>
|
||||
interface JKMethod : JKDeclaration {
|
||||
var modifierList: JKModifierList
|
||||
var name: JKNameIdentifier
|
||||
var valueArguments: List<JKValueArgument>
|
||||
var block: JKBlock?
|
||||
}
|
||||
|
||||
interface JKExpressionStatement : JKStatement {
|
||||
val expression: JKExpression
|
||||
}
|
||||
@@ -18,4 +18,8 @@ package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
interface JKModifierListOwner {
|
||||
var modifierList: JKModifierList
|
||||
}
|
||||
|
||||
interface JKReferenceTarget {
|
||||
val valid: Boolean
|
||||
}
|
||||
@@ -19,15 +19,10 @@ interface JKTransformer<in D> : JKVisitor<JKElement, D> {
|
||||
override fun visitTypeCastExpression(typeCastExpression: JKTypeCastExpression, data: D): JKTypeCastExpression = visitExpression(typeCastExpression, data) as JKTypeCastExpression
|
||||
override fun visitExpressionList(expressionList: JKExpressionList, data: D): JKExpressionList = visitElement(expressionList, data) as JKExpressionList
|
||||
override fun visitReference(reference: JKReference, data: D): JKReference = visitElement(reference, data) as JKReference
|
||||
override fun visitExternalReference(externalReference: JKExternalReference, data: D): JKExternalReference = visit(externalReference, data) as JKExternalReference
|
||||
override fun visitMethodReference(methodReference: JKMethodReference, data: D): JKMethodReference = visitReference(methodReference, data) as JKMethodReference
|
||||
override fun visitFieldReference(fieldReference: JKFieldReference, data: D): JKFieldReference = visitReference(fieldReference, data) as JKFieldReference
|
||||
override fun visitClassReference(classReference: JKClassReference, data: D): JKClassReference = visitReference(classReference, data) as JKClassReference
|
||||
override fun visitType(type: JKType, data: D): JKType = visitElement(type, data) as JKType
|
||||
override fun visitExternalMethodReference(externalMethodReference: JKExternalMethodReference, data: D): JKExternalMethodReference = visitExternalReference(externalMethodReference, data) as JKExternalMethodReference
|
||||
override fun visitExternalFieldReference(externalFieldReference: JKExternalFieldReference, data: D): JKExternalFieldReference = visitExternalReference(externalFieldReference, data) as JKExternalFieldReference
|
||||
override fun visitExternalClassReference(externalClassReference: JKExternalClassReference, data: D): JKExternalClassReference = visitExternalReference(externalClassReference, data) as JKExternalClassReference
|
||||
override fun visitExternalTypeReference(externalTypeReference: JKExternalTypeReference, data: D): JKExternalTypeReference = visitExternalReference(externalTypeReference, data) as JKExternalTypeReference
|
||||
override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: D): JKOperatorIdentifier = visitIdentifier(operatorIdentifier, data) as JKOperatorIdentifier
|
||||
override fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier, data: D): JKQualificationIdentifier = visitIdentifier(qualificationIdentifier, data) as JKQualificationIdentifier
|
||||
override fun visitLoop(loop: JKLoop, data: D): JKLoop = visitStatement(loop, data) as JKLoop
|
||||
@@ -43,8 +38,10 @@ interface JKTransformer<in D> : JKVisitor<JKElement, D> {
|
||||
override fun visitValueArgument(valueArgument: JKValueArgument, data: D): JKValueArgument = visitElement(valueArgument, data) as JKValueArgument
|
||||
override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: D): JKStringLiteralExpression = visitLiteralExpression(stringLiteralExpression, data) as JKStringLiteralExpression
|
||||
override fun visitModalityModifier(modalityModifier: JKModalityModifier, data: D): JKModalityModifier = visitModifier(modalityModifier, data) as JKModalityModifier
|
||||
override fun visitMethod(method: JKMethod, data: D): JKMethod = visitDeclaration(method, data) as JKMethod
|
||||
override fun visitExpressionStatement(expressionStatement: JKExpressionStatement, data: D): JKExpressionStatement = visitStatement(expressionStatement, data) as JKExpressionStatement
|
||||
override fun visitJavaField(javaField: JKJavaField, data: D): JKDeclaration = visitDeclaration(javaField, data)
|
||||
override fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): JKDeclaration = visitDeclaration(javaMethod, data)
|
||||
override fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): JKMethod = visitMethod(javaMethod, data)
|
||||
override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): JKLoop = visitLoop(javaForLoop, data)
|
||||
override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): JKExpression = visitExpression(javaAssignmentExpression, data)
|
||||
override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier, data)
|
||||
@@ -61,7 +58,6 @@ interface JKTransformer<in D> : JKVisitor<JKElement, D> {
|
||||
override fun visitJavaModifier(javaModifier: JKJavaModifier, data: D): JKModifier = visitModifier(javaModifier, data)
|
||||
override fun visitJavaNewEmptyArray(javaNewEmptyArray: JKJavaNewEmptyArray, data: D): JKExpression = visitExpression(javaNewEmptyArray, data)
|
||||
override fun visitJavaNewArray(javaNewArray: JKJavaNewArray, data: D): JKExpression = visitExpression(javaNewArray, data)
|
||||
override fun visitJavaExternalReference(javaExternalReference: JKJavaExternalReference, data: D): JKExternalReference = visitExternalReference(javaExternalReference, data)
|
||||
override fun visitKtFun(ktFun: JKKtFun, data: D): JKDeclaration = visitDeclaration(ktFun, data)
|
||||
override fun visitKtConstructor(ktConstructor: JKKtConstructor, data: D): JKDeclaration = visitDeclaration(ktConstructor, data)
|
||||
override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): JKDeclaration = visitKtConstructor(ktPrimaryConstructor, data)
|
||||
|
||||
@@ -35,8 +35,6 @@ interface JKTransformerVoid : JKTransformer<Nothing?> {
|
||||
override fun visitExpressionList(expressionList: JKExpressionList, data: Nothing?): JKExpressionList = visitExpressionList(expressionList)
|
||||
fun visitReference(reference: JKReference): JKReference = visitElement(reference) as JKReference
|
||||
override fun visitReference(reference: JKReference, data: Nothing?): JKReference = visitReference(reference)
|
||||
fun visitExternalReference(externalReference: JKExternalReference): JKExternalReference = visit(externalReference) as JKExternalReference
|
||||
override fun visitExternalReference(externalReference: JKExternalReference, data: Nothing?): JKExternalReference = visitExternalReference(externalReference)
|
||||
fun visitMethodReference(methodReference: JKMethodReference): JKMethodReference = visitReference(methodReference) as JKMethodReference
|
||||
override fun visitMethodReference(methodReference: JKMethodReference, data: Nothing?): JKMethodReference = visitMethodReference(methodReference)
|
||||
fun visitFieldReference(fieldReference: JKFieldReference): JKFieldReference = visitReference(fieldReference) as JKFieldReference
|
||||
@@ -45,14 +43,6 @@ interface JKTransformerVoid : JKTransformer<Nothing?> {
|
||||
override fun visitClassReference(classReference: JKClassReference, data: Nothing?): JKClassReference = visitClassReference(classReference)
|
||||
fun visitType(type: JKType): JKType = visitElement(type) as JKType
|
||||
override fun visitType(type: JKType, data: Nothing?): JKType = visitType(type)
|
||||
fun visitExternalMethodReference(externalMethodReference: JKExternalMethodReference): JKExternalMethodReference = visitExternalReference(externalMethodReference) as JKExternalMethodReference
|
||||
override fun visitExternalMethodReference(externalMethodReference: JKExternalMethodReference, data: Nothing?): JKExternalMethodReference = visitExternalMethodReference(externalMethodReference)
|
||||
fun visitExternalFieldReference(externalFieldReference: JKExternalFieldReference): JKExternalFieldReference = visitExternalReference(externalFieldReference) as JKExternalFieldReference
|
||||
override fun visitExternalFieldReference(externalFieldReference: JKExternalFieldReference, data: Nothing?): JKExternalFieldReference = visitExternalFieldReference(externalFieldReference)
|
||||
fun visitExternalClassReference(externalClassReference: JKExternalClassReference): JKExternalClassReference = visitExternalReference(externalClassReference) as JKExternalClassReference
|
||||
override fun visitExternalClassReference(externalClassReference: JKExternalClassReference, data: Nothing?): JKExternalClassReference = visitExternalClassReference(externalClassReference)
|
||||
fun visitExternalTypeReference(externalTypeReference: JKExternalTypeReference): JKExternalTypeReference = visitExternalReference(externalTypeReference) as JKExternalTypeReference
|
||||
override fun visitExternalTypeReference(externalTypeReference: JKExternalTypeReference, data: Nothing?): JKExternalTypeReference = visitExternalTypeReference(externalTypeReference)
|
||||
fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier): JKOperatorIdentifier = visitIdentifier(operatorIdentifier) as JKOperatorIdentifier
|
||||
override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: Nothing?): JKOperatorIdentifier = visitOperatorIdentifier(operatorIdentifier)
|
||||
fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier): JKQualificationIdentifier = visitIdentifier(qualificationIdentifier) as JKQualificationIdentifier
|
||||
@@ -83,10 +73,14 @@ interface JKTransformerVoid : JKTransformer<Nothing?> {
|
||||
override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: Nothing?): JKStringLiteralExpression = visitStringLiteralExpression(stringLiteralExpression)
|
||||
fun visitModalityModifier(modalityModifier: JKModalityModifier): JKModalityModifier = visitModifier(modalityModifier) as JKModalityModifier
|
||||
override fun visitModalityModifier(modalityModifier: JKModalityModifier, data: Nothing?): JKModalityModifier = visitModalityModifier(modalityModifier)
|
||||
fun visitMethod(method: JKMethod): JKMethod = visitDeclaration(method) as JKMethod
|
||||
override fun visitMethod(method: JKMethod, data: Nothing?): JKMethod = visitMethod(method)
|
||||
fun visitExpressionStatement(expressionStatement: JKExpressionStatement): JKExpressionStatement = visitStatement(expressionStatement) as JKExpressionStatement
|
||||
override fun visitExpressionStatement(expressionStatement: JKExpressionStatement, data: Nothing?): JKExpressionStatement = visitExpressionStatement(expressionStatement)
|
||||
fun visitJavaField(javaField: JKJavaField): JKDeclaration = visitDeclaration(javaField)
|
||||
override fun visitJavaField(javaField: JKJavaField, data: Nothing?): JKDeclaration = visitJavaField(javaField)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod): JKDeclaration = visitDeclaration(javaMethod)
|
||||
override fun visitJavaMethod(javaMethod: JKJavaMethod, data: Nothing?): JKDeclaration = visitJavaMethod(javaMethod)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod): JKMethod = visitMethod(javaMethod)
|
||||
override fun visitJavaMethod(javaMethod: JKJavaMethod, data: Nothing?): JKMethod = visitJavaMethod(javaMethod)
|
||||
fun visitJavaForLoop(javaForLoop: JKJavaForLoop): JKLoop = visitLoop(javaForLoop)
|
||||
override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?): JKLoop = visitJavaForLoop(javaForLoop)
|
||||
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression): JKExpression = visitExpression(javaAssignmentExpression)
|
||||
@@ -119,8 +113,6 @@ interface JKTransformerVoid : JKTransformer<Nothing?> {
|
||||
override fun visitJavaNewEmptyArray(javaNewEmptyArray: JKJavaNewEmptyArray, data: Nothing?): JKExpression = visitJavaNewEmptyArray(javaNewEmptyArray)
|
||||
fun visitJavaNewArray(javaNewArray: JKJavaNewArray): JKExpression = visitExpression(javaNewArray)
|
||||
override fun visitJavaNewArray(javaNewArray: JKJavaNewArray, data: Nothing?): JKExpression = visitJavaNewArray(javaNewArray)
|
||||
fun visitJavaExternalReference(javaExternalReference: JKJavaExternalReference): JKExternalReference = visitExternalReference(javaExternalReference)
|
||||
override fun visitJavaExternalReference(javaExternalReference: JKJavaExternalReference, data: Nothing?): JKExternalReference = visitJavaExternalReference(javaExternalReference)
|
||||
fun visitKtFun(ktFun: JKKtFun): JKDeclaration = visitDeclaration(ktFun)
|
||||
override fun visitKtFun(ktFun: JKKtFun, data: Nothing?): JKDeclaration = visitKtFun(ktFun)
|
||||
fun visitKtConstructor(ktConstructor: JKKtConstructor): JKDeclaration = visitDeclaration(ktConstructor)
|
||||
|
||||
@@ -19,15 +19,10 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitTypeCastExpression(typeCastExpression: JKTypeCastExpression, data: D): R = visitExpression(typeCastExpression, data)
|
||||
fun visitExpressionList(expressionList: JKExpressionList, data: D): R = visitElement(expressionList, data)
|
||||
fun visitReference(reference: JKReference, data: D): R = visitElement(reference, data)
|
||||
fun visitExternalReference(externalReference: JKExternalReference, data: D): R = visit(externalReference, data)
|
||||
fun visitMethodReference(methodReference: JKMethodReference, data: D): R = visitReference(methodReference, data)
|
||||
fun visitFieldReference(fieldReference: JKFieldReference, data: D): R = visitReference(fieldReference, data)
|
||||
fun visitClassReference(classReference: JKClassReference, data: D): R = visitReference(classReference, data)
|
||||
fun visitType(type: JKType, data: D): R = visitElement(type, data)
|
||||
fun visitExternalMethodReference(externalMethodReference: JKExternalMethodReference, data: D): R = visitExternalReference(externalMethodReference, data)
|
||||
fun visitExternalFieldReference(externalFieldReference: JKExternalFieldReference, data: D): R = visitExternalReference(externalFieldReference, data)
|
||||
fun visitExternalClassReference(externalClassReference: JKExternalClassReference, data: D): R = visitExternalReference(externalClassReference, data)
|
||||
fun visitExternalTypeReference(externalTypeReference: JKExternalTypeReference, data: D): R = visitExternalReference(externalTypeReference, data)
|
||||
fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: D): R = visitIdentifier(operatorIdentifier, data)
|
||||
fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier, data: D): R = visitIdentifier(qualificationIdentifier, data)
|
||||
fun visitLoop(loop: JKLoop, data: D): R = visitStatement(loop, data)
|
||||
@@ -43,8 +38,10 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitValueArgument(valueArgument: JKValueArgument, data: D): R = visitElement(valueArgument, data)
|
||||
fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: D): R = visitLiteralExpression(stringLiteralExpression, data)
|
||||
fun visitModalityModifier(modalityModifier: JKModalityModifier, data: D): R = visitModifier(modalityModifier, data)
|
||||
fun visitMethod(method: JKMethod, data: D): R = visitDeclaration(method, data)
|
||||
fun visitExpressionStatement(expressionStatement: JKExpressionStatement, data: D): R = visitStatement(expressionStatement, data)
|
||||
fun visitJavaField(javaField: JKJavaField, data: D): R = visitDeclaration(javaField, data)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitDeclaration(javaMethod, data)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
|
||||
fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): R = visitLoop(javaForLoop, data)
|
||||
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data)
|
||||
fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): R = visitTypeIdentifier(javaTypeIdentifier, data)
|
||||
@@ -61,7 +58,6 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitJavaModifier(javaModifier: JKJavaModifier, data: D): R = visitModifier(javaModifier, data)
|
||||
fun visitJavaNewEmptyArray(javaNewEmptyArray: JKJavaNewEmptyArray, data: D): R = visitExpression(javaNewEmptyArray, data)
|
||||
fun visitJavaNewArray(javaNewArray: JKJavaNewArray, data: D): R = visitExpression(javaNewArray, data)
|
||||
fun visitJavaExternalReference(javaExternalReference: JKJavaExternalReference, data: D): R = visitExternalReference(javaExternalReference, 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)
|
||||
|
||||
@@ -35,8 +35,6 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitExpressionList(expressionList: JKExpressionList, data: Nothing?) = visitExpressionList(expressionList)
|
||||
fun visitReference(reference: JKReference) = visitElement(reference, null)
|
||||
override fun visitReference(reference: JKReference, data: Nothing?) = visitReference(reference)
|
||||
fun visitExternalReference(externalReference: JKExternalReference) = visit(externalReference, null)
|
||||
override fun visitExternalReference(externalReference: JKExternalReference, data: Nothing?) = visitExternalReference(externalReference)
|
||||
fun visitMethodReference(methodReference: JKMethodReference) = visitReference(methodReference, null)
|
||||
override fun visitMethodReference(methodReference: JKMethodReference, data: Nothing?) = visitMethodReference(methodReference)
|
||||
fun visitFieldReference(fieldReference: JKFieldReference) = visitReference(fieldReference, null)
|
||||
@@ -45,14 +43,6 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitClassReference(classReference: JKClassReference, data: Nothing?) = visitClassReference(classReference)
|
||||
fun visitType(type: JKType) = visitElement(type, null)
|
||||
override fun visitType(type: JKType, data: Nothing?) = visitType(type)
|
||||
fun visitExternalMethodReference(externalMethodReference: JKExternalMethodReference) = visitExternalReference(externalMethodReference, null)
|
||||
override fun visitExternalMethodReference(externalMethodReference: JKExternalMethodReference, data: Nothing?) = visitExternalMethodReference(externalMethodReference)
|
||||
fun visitExternalFieldReference(externalFieldReference: JKExternalFieldReference) = visitExternalReference(externalFieldReference, null)
|
||||
override fun visitExternalFieldReference(externalFieldReference: JKExternalFieldReference, data: Nothing?) = visitExternalFieldReference(externalFieldReference)
|
||||
fun visitExternalClassReference(externalClassReference: JKExternalClassReference) = visitExternalReference(externalClassReference, null)
|
||||
override fun visitExternalClassReference(externalClassReference: JKExternalClassReference, data: Nothing?) = visitExternalClassReference(externalClassReference)
|
||||
fun visitExternalTypeReference(externalTypeReference: JKExternalTypeReference) = visitExternalReference(externalTypeReference, null)
|
||||
override fun visitExternalTypeReference(externalTypeReference: JKExternalTypeReference, data: Nothing?) = visitExternalTypeReference(externalTypeReference)
|
||||
fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier) = visitIdentifier(operatorIdentifier, null)
|
||||
override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: Nothing?) = visitOperatorIdentifier(operatorIdentifier)
|
||||
fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier) = visitIdentifier(qualificationIdentifier, null)
|
||||
@@ -83,9 +73,13 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: Nothing?) = visitStringLiteralExpression(stringLiteralExpression)
|
||||
fun visitModalityModifier(modalityModifier: JKModalityModifier) = visitModifier(modalityModifier, null)
|
||||
override fun visitModalityModifier(modalityModifier: JKModalityModifier, data: Nothing?) = visitModalityModifier(modalityModifier)
|
||||
fun visitMethod(method: JKMethod) = visitDeclaration(method, null)
|
||||
override fun visitMethod(method: JKMethod, data: Nothing?) = visitMethod(method)
|
||||
fun visitExpressionStatement(expressionStatement: JKExpressionStatement) = visitStatement(expressionStatement, null)
|
||||
override fun visitExpressionStatement(expressionStatement: JKExpressionStatement, data: Nothing?) = visitExpressionStatement(expressionStatement)
|
||||
fun visitJavaField(javaField: JKJavaField) = visitDeclaration(javaField, null)
|
||||
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitDeclaration(javaMethod, null)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(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)
|
||||
@@ -119,8 +113,6 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitJavaNewEmptyArray(javaNewEmptyArray: JKJavaNewEmptyArray, data: Nothing?) = visitJavaNewEmptyArray(javaNewEmptyArray)
|
||||
fun visitJavaNewArray(javaNewArray: JKJavaNewArray) = visitExpression(javaNewArray, null)
|
||||
override fun visitJavaNewArray(javaNewArray: JKJavaNewArray, data: Nothing?) = visitJavaNewArray(javaNewArray)
|
||||
fun visitJavaExternalReference(javaExternalReference: JKJavaExternalReference) = visitExternalReference(javaExternalReference, null)
|
||||
override fun visitJavaExternalReference(javaExternalReference: JKJavaExternalReference, data: Nothing?) = visitJavaExternalReference(javaExternalReference)
|
||||
fun visitKtFun(ktFun: JKKtFun) = visitDeclaration(ktFun, null)
|
||||
override fun visitKtFun(ktFun: JKKtFun, data: Nothing?) = visitKtFun(ktFun)
|
||||
fun visitKtConstructor(ktConstructor: JKKtConstructor) = visitDeclaration(ktConstructor, null)
|
||||
|
||||
+5
-1
@@ -1,5 +1,9 @@
|
||||
package p;
|
||||
|
||||
public class Some {
|
||||
public String aaaa = "";
|
||||
public String test=""+"a";
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Test");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user