New J2K: Added java -> jk converter for field access.
This commit is contained in:
@@ -82,7 +82,7 @@ class JavaToJKTreeBuilder {
|
||||
fun PsiMethodCallExpression.toJK(): JKExpression {
|
||||
val method = methodExpression as PsiReferenceExpressionImpl
|
||||
val identifier = (method.referenceNameElement as PsiIdentifier).convertMethodReference()
|
||||
val call = JKJavaCallExpressionImpl(argumentList.toJK(), identifier)
|
||||
val call = JKJavaMethodCallExpressionImpl(argumentList.toJK(), identifier)
|
||||
return if (method.findChildByRole(ChildRole.DOT) != null) {
|
||||
JKQualifiedExpressionImpl((method.qualifier as PsiExpression).toJK(), JKJavaQualificationIdentifierImpl.DOT, call)
|
||||
}
|
||||
@@ -91,6 +91,18 @@ class JavaToJKTreeBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
fun PsiReferenceExpression.toJK(): JKExpression {
|
||||
val impl = this as PsiReferenceExpressionImpl
|
||||
val identifier = (impl.referenceNameElement as PsiIdentifier).convertFieldReference()
|
||||
val access = JKJavaFieldAccessExpressionImpl(identifier)
|
||||
return if (impl.findChildByRole(ChildRole.DOT) != null) {
|
||||
JKQualifiedExpressionImpl((impl.qualifier as PsiExpression).toJK(), JKJavaQualificationIdentifierImpl.DOT, access)
|
||||
}
|
||||
else {
|
||||
access
|
||||
}
|
||||
}
|
||||
|
||||
fun PsiExpressionList.toJK(): JKExpressionList {
|
||||
return JKExpressionListImpl(expressions.map { it.toJK() }.toTypedArray())
|
||||
}
|
||||
@@ -98,6 +110,10 @@ class JavaToJKTreeBuilder {
|
||||
fun PsiIdentifier.convertMethodReference(): JKJavaMethodReference {
|
||||
return JKJavaMethodReferenceImpl()
|
||||
}
|
||||
|
||||
fun PsiIdentifier.convertFieldReference(): JKJavaFieldReference {
|
||||
return JKJavaFieldReferenceImpl()
|
||||
}
|
||||
}
|
||||
|
||||
private object DeclarationMapper {
|
||||
|
||||
@@ -77,9 +77,9 @@ sealed class JKJavaQualificationIdentifierImpl : JKJavaQualificationIdentifier,
|
||||
object DOT : JKJavaQualificationIdentifierImpl()
|
||||
}
|
||||
|
||||
class JKJavaCallExpressionImpl(override val arguments: JKExpressionList,
|
||||
override val identifier: JKJavaMethodReference) : JKJavaCallExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaCallExpression(this, data)
|
||||
class JKJavaMethodCallExpressionImpl(override val arguments: JKExpressionList,
|
||||
override val identifier: JKMethodReference) : JKJavaMethodCallExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethodCallExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
identifier.accept(visitor, data)
|
||||
@@ -87,10 +87,26 @@ class JKJavaCallExpressionImpl(override val arguments: JKExpressionList,
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaFieldAccessExpressionImpl(override val identifier: JKFieldReference) : 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) {
|
||||
identifier.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
|
||||
class JKJavaMethodReferenceImpl() : JKJavaMethodReference, JKElementBase() {
|
||||
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() : JKJavaFieldReference, JKElementBase() {
|
||||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -45,12 +45,18 @@ interface JKJavaOperatorIdentifier : JKOperatorIdentifier
|
||||
|
||||
interface JKJavaQualificationIdentifier : JKQualificationIdentifier
|
||||
|
||||
interface JKJavaCallExpression : JKCallExpression {
|
||||
override val identifier: JKJavaMethodReference
|
||||
interface JKJavaMethodCallExpression : JKMethodCallExpression {
|
||||
|
||||
}
|
||||
|
||||
interface JKJavaFieldAccessExpression : JKFieldAccessExpression {
|
||||
|
||||
}
|
||||
|
||||
interface JKJavaMethodReference : JKMethodReference
|
||||
|
||||
interface JKJavaFieldReference : JKFieldReference
|
||||
|
||||
interface JKJavaAccessModifier : JKAccessModifier {
|
||||
val type: AccessModifierType
|
||||
|
||||
|
||||
@@ -65,11 +65,15 @@ interface JKQualifiedExpression : JKExpression {
|
||||
val selector: JKStatement
|
||||
}
|
||||
|
||||
interface JKCallExpression : JKExpression {
|
||||
interface JKMethodCallExpression : JKExpression {
|
||||
val identifier: JKMethodReference
|
||||
val arguments: JKExpressionList
|
||||
}
|
||||
|
||||
interface JKFieldAccessExpression : JKExpression {
|
||||
val identifier: JKFieldReference
|
||||
}
|
||||
|
||||
interface JKExpressionList : JKElement {
|
||||
val expressions: Array<JKExpression>
|
||||
}
|
||||
@@ -78,6 +82,10 @@ interface JKMethodReference : JKElement {
|
||||
|
||||
}
|
||||
|
||||
interface JKFieldReference : JKElement {
|
||||
|
||||
}
|
||||
|
||||
interface JKOperatorIdentifier : JKIdentifier
|
||||
|
||||
interface JKQualificationIdentifier : JKIdentifier
|
||||
|
||||
@@ -12,9 +12,11 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitPrefixExpression(prefixExpression: JKPrefixExpression, data: D): R = visitUnaryExpression(prefixExpression, data)
|
||||
fun visitPostfixExpression(postfixExpression: JKPostfixExpression, data: D): R = visitUnaryExpression(postfixExpression, data)
|
||||
fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression, data: D): R = visitExpression(qualifiedExpression, data)
|
||||
fun visitCallExpression(callExpression: JKCallExpression, data: D): R = visitExpression(callExpression, data)
|
||||
fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression, data: D): R = visitExpression(methodCallExpression, data)
|
||||
fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression, data: D): R = visitExpression(fieldAccessExpression, 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 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)
|
||||
@@ -40,8 +42,10 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): R = visitLiteralExpression(javaStringLiteralExpression, data)
|
||||
fun visitJavaOperatorIdentifier(javaOperatorIdentifier: JKJavaOperatorIdentifier, data: D): R = visitOperatorIdentifier(javaOperatorIdentifier, data)
|
||||
fun visitJavaQualificationIdentifier(javaQualificationIdentifier: JKJavaQualificationIdentifier, data: D): R = visitQualificationIdentifier(javaQualificationIdentifier, data)
|
||||
fun visitJavaCallExpression(javaCallExpression: JKJavaCallExpression, data: D): R = visitCallExpression(javaCallExpression, data)
|
||||
fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression, data: D): R = visitMethodCallExpression(javaMethodCallExpression, data)
|
||||
fun visitJavaFieldAccessExpression(javaFieldAccessExpression: JKJavaFieldAccessExpression, data: D): R = visitFieldAccessExpression(javaFieldAccessExpression, data)
|
||||
fun visitJavaMethodReference(javaMethodReference: JKJavaMethodReference, data: D): R = visitMethodReference(javaMethodReference, data)
|
||||
fun visitJavaFieldReference(javaFieldReference: JKJavaFieldReference, data: D): R = visitFieldReference(javaFieldReference, data)
|
||||
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): R = visitAccessModifier(javaAccessModifier, data)
|
||||
fun visitJavaModifier(javaModifier: JKJavaModifier, data: D): R = visitModifier(javaModifier, data)
|
||||
fun visitKtFun(ktFun: JKKtFun, data: D): R = visitDeclaration(ktFun, data)
|
||||
|
||||
@@ -21,12 +21,16 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitPostfixExpression(postfixExpression: JKPostfixExpression, data: Nothing?) = visitPostfixExpression(postfixExpression)
|
||||
fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression) = visitExpression(qualifiedExpression, null)
|
||||
override fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression, data: Nothing?) = visitQualifiedExpression(qualifiedExpression)
|
||||
fun visitCallExpression(callExpression: JKCallExpression) = visitExpression(callExpression, null)
|
||||
override fun visitCallExpression(callExpression: JKCallExpression, data: Nothing?) = visitCallExpression(callExpression)
|
||||
fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression) = visitExpression(methodCallExpression, null)
|
||||
override fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression, data: Nothing?) = visitMethodCallExpression(methodCallExpression)
|
||||
fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression) = visitExpression(fieldAccessExpression, null)
|
||||
override fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression, data: Nothing?) = visitFieldAccessExpression(fieldAccessExpression)
|
||||
fun visitExpressionList(expressionList: JKExpressionList) = visitElement(expressionList, null)
|
||||
override fun visitExpressionList(expressionList: JKExpressionList, data: Nothing?) = visitExpressionList(expressionList)
|
||||
fun visitMethodReference(methodReference: JKMethodReference) = visitElement(methodReference, null)
|
||||
override fun visitMethodReference(methodReference: JKMethodReference, data: Nothing?) = visitMethodReference(methodReference)
|
||||
fun visitFieldReference(fieldReference: JKFieldReference) = visitElement(fieldReference, null)
|
||||
override fun visitFieldReference(fieldReference: JKFieldReference, data: Nothing?) = visitFieldReference(fieldReference)
|
||||
fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier) = visitIdentifier(operatorIdentifier, null)
|
||||
override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: Nothing?) = visitOperatorIdentifier(operatorIdentifier)
|
||||
fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier) = visitIdentifier(qualificationIdentifier, null)
|
||||
@@ -71,10 +75,14 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitJavaOperatorIdentifier(javaOperatorIdentifier: JKJavaOperatorIdentifier, data: Nothing?) = visitJavaOperatorIdentifier(javaOperatorIdentifier)
|
||||
fun visitJavaQualificationIdentifier(javaQualificationIdentifier: JKJavaQualificationIdentifier) = visitQualificationIdentifier(javaQualificationIdentifier, null)
|
||||
override fun visitJavaQualificationIdentifier(javaQualificationIdentifier: JKJavaQualificationIdentifier, data: Nothing?) = visitJavaQualificationIdentifier(javaQualificationIdentifier)
|
||||
fun visitJavaCallExpression(javaCallExpression: JKJavaCallExpression) = visitCallExpression(javaCallExpression, null)
|
||||
override fun visitJavaCallExpression(javaCallExpression: JKJavaCallExpression, data: Nothing?) = visitJavaCallExpression(javaCallExpression)
|
||||
fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression) = visitMethodCallExpression(javaMethodCallExpression, null)
|
||||
override fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression, data: Nothing?) = visitJavaMethodCallExpression(javaMethodCallExpression)
|
||||
fun visitJavaFieldAccessExpression(javaFieldAccessExpression: JKJavaFieldAccessExpression) = visitFieldAccessExpression(javaFieldAccessExpression, null)
|
||||
override fun visitJavaFieldAccessExpression(javaFieldAccessExpression: JKJavaFieldAccessExpression, data: Nothing?) = visitJavaFieldAccessExpression(javaFieldAccessExpression)
|
||||
fun visitJavaMethodReference(javaMethodReference: JKJavaMethodReference) = visitMethodReference(javaMethodReference, null)
|
||||
override fun visitJavaMethodReference(javaMethodReference: JKJavaMethodReference, data: Nothing?) = visitJavaMethodReference(javaMethodReference)
|
||||
fun visitJavaFieldReference(javaFieldReference: JKJavaFieldReference) = visitFieldReference(javaFieldReference, null)
|
||||
override fun visitJavaFieldReference(javaFieldReference: JKJavaFieldReference, data: Nothing?) = visitJavaFieldReference(javaFieldReference)
|
||||
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) = visitAccessModifier(javaAccessModifier, null)
|
||||
override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?) = visitJavaAccessModifier(javaAccessModifier)
|
||||
fun visitKtFun(ktFun: JKKtFun) = visitDeclaration(ktFun, null)
|
||||
|
||||
Reference in New Issue
Block a user