New J2K: References base
This commit is contained in:
@@ -25,9 +25,22 @@ import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.*
|
||||
|
||||
class JavaToJKTreeBuilder {
|
||||
|
||||
private object ExpressionTreeMapper {
|
||||
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.
|
||||
|
||||
private val expressionTreeMapper = ExpressionTreeMapper()
|
||||
|
||||
private val declarationMapper = DeclarationMapper(expressionTreeMapper)
|
||||
|
||||
private val modifierMapper = ModifierMapper()
|
||||
|
||||
private val javaToJKTreeBuilder = this
|
||||
|
||||
private inner class ExpressionTreeMapper {
|
||||
fun PsiExpression.toJK(): JKExpression {
|
||||
when (this) {
|
||||
is PsiBinaryExpression -> {
|
||||
@@ -141,7 +154,7 @@ class JavaToJKTreeBuilder {
|
||||
return JKJavaNewEmptyArrayImpl(dimensions.map { it?.toJK() })
|
||||
}
|
||||
}
|
||||
return JKJavaNewExpressionImpl((classReference as PsiIdentifier).convertClassReference(), argumentList.toJK())
|
||||
return JKJavaNewExpressionImpl((classReference as PsiIdentifier).convertType(), argumentList.toJK())
|
||||
}
|
||||
|
||||
fun PsiArrayAccessExpression.toJK(): JKExpression {
|
||||
@@ -149,7 +162,7 @@ class JavaToJKTreeBuilder {
|
||||
}
|
||||
|
||||
fun PsiTypeCastExpression.toJK(): JKExpression {
|
||||
return JKTypeCastExpressionImpl(operand?.toJK(), castType?.convertTypeReference())
|
||||
return JKTypeCastExpressionImpl(operand?.toJK(), castType?.toJK())
|
||||
}
|
||||
|
||||
fun PsiParenthesizedExpression.toJK(): JKExpression {
|
||||
@@ -160,25 +173,46 @@ class JavaToJKTreeBuilder {
|
||||
return JKExpressionListImpl(this?.expressions?.map { it.toJK() }?.toTypedArray() ?: emptyArray())
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertMethodReference(): JKJavaMethodReference {
|
||||
fun PsiIdentifier.toJK(): JKNameIdentifier {
|
||||
return JKNameIdentifierImpl(this.text)
|
||||
}
|
||||
|
||||
return JKJavaMethodReferenceImpl()
|
||||
fun PsiIdentifier.convertMethodReference(): JKJavaMethodReference {
|
||||
return JKJavaMethodReferenceImpl(this.toJK(), javaToJKTreeBuilder)
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertFieldReference(): JKJavaFieldReference {
|
||||
return JKJavaFieldReferenceImpl()
|
||||
return JKJavaFieldReferenceImpl(this.toJK(), javaToJKTreeBuilder)
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertClassReference(): JKJavaClassReference {
|
||||
return JKJavaClassReferenceImpl()
|
||||
fun PsiIdentifier.convertType(): JKJavaClassReference {
|
||||
return JKJavaClassReferenceImpl(this.toJK(), javaToJKTreeBuilder)
|
||||
}
|
||||
|
||||
fun PsiTypeElement.convertTypeReference(): JKTypeReference {
|
||||
return JKTypeReferenceImpl()
|
||||
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 typeArguments = ArrayList<JKType>()
|
||||
parameterList?.typeParameterElements?.forEach { it ->
|
||||
kotlin.run {
|
||||
val type = it.toJK()
|
||||
if (type != null) typeArguments.add(type)
|
||||
}
|
||||
}
|
||||
return JKTypeImpl(classReference, typeArguments)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private object DeclarationMapper {
|
||||
private inner class DeclarationMapper(val expressionTreeMapper: ExpressionTreeMapper) {
|
||||
|
||||
val declarationMapper = this
|
||||
|
||||
fun PsiClass.toJK(): JKClass {
|
||||
val classKind: JKClass.ClassKind = when {
|
||||
@@ -187,22 +221,22 @@ class JavaToJKTreeBuilder {
|
||||
isInterface -> JKClass.ClassKind.INTERFACE
|
||||
else -> JKClass.ClassKind.CLASS
|
||||
}
|
||||
return JKClassImpl(with(ModifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(this.name!!), classKind).apply {
|
||||
declarations = children.mapNotNull { ElementVisitor().apply { it.accept(this) }.resultElement as? JKDeclaration }
|
||||
return JKClassImpl(with(modifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(this.name!!), classKind).apply {
|
||||
declarations = children.mapNotNull { ElementVisitor(declarationMapper).apply { it.accept(this) }.resultElement as? JKDeclaration }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun PsiField.toJK(): JKJavaField {
|
||||
|
||||
val initializer = with(ExpressionTreeMapper) {
|
||||
val initializer = with(expressionTreeMapper) {
|
||||
initializer?.toJK()
|
||||
}
|
||||
|
||||
val type = JKJavaTypeIdentifierImpl(this.type.canonicalText)
|
||||
val name = JKNameIdentifierImpl(this.name!!)
|
||||
|
||||
val modifierList = with(ModifierMapper) {
|
||||
val modifierList = with(modifierMapper) {
|
||||
modifierList.toJK()
|
||||
}
|
||||
|
||||
@@ -210,7 +244,7 @@ class JavaToJKTreeBuilder {
|
||||
}
|
||||
|
||||
fun PsiMethod.toJK(): JKJavaMethod {
|
||||
val modifierList = with(ModifierMapper) { modifierList.toJK() }
|
||||
val modifierList = with(modifierMapper) { modifierList.toJK() }
|
||||
val name = JKNameIdentifierImpl(name)
|
||||
val valueArgumentList = this.parameterList.parameters.map { it -> it.toJK() }
|
||||
val block = body?.toJK()
|
||||
@@ -236,7 +270,7 @@ class JavaToJKTreeBuilder {
|
||||
|
||||
}
|
||||
|
||||
private object ModifierMapper {
|
||||
private inner class ModifierMapper {
|
||||
fun PsiModifierList?.toJK(): JKModifierList {
|
||||
|
||||
val modifierList = JKModifierListImpl()
|
||||
@@ -267,16 +301,16 @@ class JavaToJKTreeBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private class ElementVisitor : JavaElementVisitor() {
|
||||
private inner class ElementVisitor(val declarationMapper: DeclarationMapper) : JavaElementVisitor() {
|
||||
|
||||
var resultElement: JKElement? = null
|
||||
|
||||
override fun visitClass(aClass: PsiClass) {
|
||||
resultElement = with(DeclarationMapper) { aClass.toJK() }
|
||||
resultElement = with(declarationMapper) { aClass.toJK() }
|
||||
}
|
||||
|
||||
override fun visitField(field: PsiField) {
|
||||
resultElement = with(DeclarationMapper) { field.toJK() }
|
||||
resultElement = with(declarationMapper) { field.toJK() }
|
||||
}
|
||||
|
||||
override fun visitFile(file: PsiFile) {
|
||||
@@ -287,7 +321,7 @@ class JavaToJKTreeBuilder {
|
||||
|
||||
fun buildTree(psi: PsiElement): JKElement? {
|
||||
assert(psi.language.`is`(JavaLanguage.INSTANCE)) { "Unable to build JK Tree using Java Visitor for language ${psi.language}" }
|
||||
val elementVisitor = ElementVisitor()
|
||||
val elementVisitor = ElementVisitor(declarationMapper)
|
||||
psi.accept(elementVisitor)
|
||||
return elementVisitor.resultElement
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
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
|
||||
@@ -27,8 +28,7 @@ class JKJavaFieldImpl(override var modifierList: JKModifierList,
|
||||
|
||||
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> 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)
|
||||
@@ -124,7 +124,16 @@ class JKJavaNewExpressionImpl(override var identifier: JKClassReference,
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaMethodReferenceImpl() : JKJavaMethodReference, JKElementBase() {
|
||||
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) {
|
||||
@@ -132,7 +141,16 @@ class JKJavaMethodReferenceImpl() : JKJavaMethodReference, JKElementBase() {
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaFieldReferenceImpl() : JKJavaFieldReference, JKElementBase() {
|
||||
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) {
|
||||
@@ -140,7 +158,16 @@ class JKJavaFieldReferenceImpl() : JKJavaFieldReference, JKElementBase() {
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaClassReferenceImpl() : JKJavaClassReference, JKElementBase() {
|
||||
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) {
|
||||
|
||||
@@ -16,6 +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.visitors.JKTransformer
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
@@ -184,7 +187,7 @@ class JKParenthesizedExpressionImpl(override var expression: JKExpression?) : JK
|
||||
}
|
||||
}
|
||||
|
||||
class JKTypeCastExpressionImpl(override var expression: JKExpression?, override var type: JKTypeReference?) : JKTypeCastExpression, JKElementBase() {
|
||||
class JKTypeCastExpressionImpl(override var expression: JKExpression?, override var type: JKType?) : JKTypeCastExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitTypeCastExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
@@ -198,10 +201,10 @@ class JKTypeCastExpressionImpl(override var expression: JKExpression?, override
|
||||
}
|
||||
}
|
||||
|
||||
class JKTypeReferenceImpl(override val parameters: List<JKTypeReference>) : JKTypeReference, JKElementBase() {
|
||||
class JKTypeReferenceImpl(override val parameters: List<JKType>) : JKType, JKElementBase() {
|
||||
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitTypeReference(this, data)
|
||||
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) {
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
@@ -86,7 +87,7 @@ interface JKParenthesizedExpression : JKExpression {
|
||||
|
||||
interface JKTypeCastExpression : JKExpression {
|
||||
val expression: JKExpression?
|
||||
val type: JKTypeReference?
|
||||
val type: JKType?
|
||||
}
|
||||
|
||||
interface JKExpressionList : JKElement {
|
||||
@@ -94,7 +95,8 @@ interface JKExpressionList : JKElement {
|
||||
}
|
||||
|
||||
interface JKReference : JKElement {
|
||||
|
||||
val targetProvider:ReferenceTargetProvider
|
||||
fun resolve(): JKElement
|
||||
}
|
||||
|
||||
interface JKExternalReference {
|
||||
@@ -102,19 +104,39 @@ interface JKExternalReference {
|
||||
}
|
||||
|
||||
interface JKMethodReference : JKReference {
|
||||
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
}
|
||||
|
||||
interface JKFieldReference : JKReference {
|
||||
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
}
|
||||
|
||||
interface JKClassReference : JKReference {
|
||||
|
||||
val nameIdentifier: JKNameIdentifier
|
||||
}
|
||||
|
||||
interface JKTypeReference : JKReference {
|
||||
val parameters: List<JKTypeReference>
|
||||
interface JKType : JKElement {
|
||||
val classReference: JKClassReference
|
||||
val nullability: Nullability
|
||||
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
|
||||
@@ -156,4 +178,9 @@ interface JKStringLiteralExpression : JKLiteralExpression {
|
||||
val text: String
|
||||
}
|
||||
|
||||
interface JKModalityModifier : JKModifier
|
||||
interface JKModalityModifier : JKModifier
|
||||
|
||||
interface ReferenceTargetProvider {
|
||||
val resolveCache: Map<JKElement, PsiElement>
|
||||
val conversionCache: Map<PsiElement, JKElement>
|
||||
}
|
||||
@@ -18,10 +18,16 @@ interface JKTransformer<in D> : JKVisitor<JKElement, D> {
|
||||
override fun visitParenthesizedExpression(parenthesizedExpression: JKParenthesizedExpression, data: D): JKParenthesizedExpression = visitExpression(parenthesizedExpression, data) as JKParenthesizedExpression
|
||||
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 visitMethodReference(methodReference: JKMethodReference, data: D): JKMethodReference = visitElement(methodReference, data) as JKMethodReference
|
||||
override fun visitFieldReference(fieldReference: JKFieldReference, data: D): JKFieldReference = visitElement(fieldReference, data) as JKFieldReference
|
||||
override fun visitClassReference(classReference: JKClassReference, data: D): JKClassReference = visitElement(classReference, data) as JKClassReference
|
||||
override fun visitTypeReference(typeReference: JKTypeReference, data: D): JKTypeReference = visitElement(typeReference, data) as JKTypeReference
|
||||
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
|
||||
@@ -55,6 +61,7 @@ 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)
|
||||
|
||||
@@ -33,14 +33,26 @@ interface JKTransformerVoid : JKTransformer<Nothing?> {
|
||||
override fun visitTypeCastExpression(typeCastExpression: JKTypeCastExpression, data: Nothing?): JKTypeCastExpression = visitTypeCastExpression(typeCastExpression)
|
||||
fun visitExpressionList(expressionList: JKExpressionList): JKExpressionList = visitElement(expressionList) as JKExpressionList
|
||||
override fun visitExpressionList(expressionList: JKExpressionList, data: Nothing?): JKExpressionList = visitExpressionList(expressionList)
|
||||
fun visitMethodReference(methodReference: JKMethodReference): JKMethodReference = visitElement(methodReference) as JKMethodReference
|
||||
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 = visitElement(fieldReference) as JKFieldReference
|
||||
fun visitFieldReference(fieldReference: JKFieldReference): JKFieldReference = visitReference(fieldReference) as JKFieldReference
|
||||
override fun visitFieldReference(fieldReference: JKFieldReference, data: Nothing?): JKFieldReference = visitFieldReference(fieldReference)
|
||||
fun visitClassReference(classReference: JKClassReference): JKClassReference = visitElement(classReference) as JKClassReference
|
||||
fun visitClassReference(classReference: JKClassReference): JKClassReference = visitReference(classReference) as JKClassReference
|
||||
override fun visitClassReference(classReference: JKClassReference, data: Nothing?): JKClassReference = visitClassReference(classReference)
|
||||
fun visitTypeReference(typeReference: JKTypeReference): JKTypeReference = visitElement(typeReference) as JKTypeReference
|
||||
override fun visitTypeReference(typeReference: JKTypeReference, data: Nothing?): JKTypeReference = visitTypeReference(typeReference)
|
||||
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
|
||||
@@ -107,6 +119,8 @@ 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)
|
||||
|
||||
@@ -18,10 +18,16 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitParenthesizedExpression(parenthesizedExpression: JKParenthesizedExpression, data: D): R = visitExpression(parenthesizedExpression, data)
|
||||
fun visitTypeCastExpression(typeCastExpression: JKTypeCastExpression, data: D): R = visitExpression(typeCastExpression, data)
|
||||
fun visitExpressionList(expressionList: JKExpressionList, data: D): R = visitElement(expressionList, data)
|
||||
fun visitMethodReference(methodReference: JKMethodReference, data: D): R = visitElement(methodReference, data)
|
||||
fun visitFieldReference(fieldReference: JKFieldReference, data: D): R = visitElement(fieldReference, data)
|
||||
fun visitClassReference(classReference: JKClassReference, data: D): R = visitElement(classReference, data)
|
||||
fun visitTypeReference(typeReference: JKTypeReference, data: D): R = visitElement(typeReference, 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)
|
||||
@@ -55,6 +61,7 @@ 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)
|
||||
|
||||
@@ -33,14 +33,26 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitTypeCastExpression(typeCastExpression: JKTypeCastExpression, data: Nothing?) = visitTypeCastExpression(typeCastExpression)
|
||||
fun visitExpressionList(expressionList: JKExpressionList) = visitElement(expressionList, null)
|
||||
override fun visitExpressionList(expressionList: JKExpressionList, data: Nothing?) = visitExpressionList(expressionList)
|
||||
fun visitMethodReference(methodReference: JKMethodReference) = visitElement(methodReference, null)
|
||||
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) = visitElement(fieldReference, null)
|
||||
fun visitFieldReference(fieldReference: JKFieldReference) = visitReference(fieldReference, null)
|
||||
override fun visitFieldReference(fieldReference: JKFieldReference, data: Nothing?) = visitFieldReference(fieldReference)
|
||||
fun visitClassReference(classReference: JKClassReference) = visitElement(classReference, null)
|
||||
fun visitClassReference(classReference: JKClassReference) = visitReference(classReference, null)
|
||||
override fun visitClassReference(classReference: JKClassReference, data: Nothing?) = visitClassReference(classReference)
|
||||
fun visitTypeReference(typeReference: JKTypeReference) = visitElement(typeReference, null)
|
||||
override fun visitTypeReference(typeReference: JKTypeReference, data: Nothing?) = visitTypeReference(typeReference)
|
||||
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)
|
||||
@@ -107,6 +119,8 @@ 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)
|
||||
|
||||
Reference in New Issue
Block a user