diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index e248023ba35..cbf836c9c4a 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -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 { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index 992df4bf084..bd61faf46b5 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -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 accept(visitor: JKVisitor, data: D): R = visitor.visitJavaCallExpression(this, data) +class JKJavaMethodCallExpressionImpl(override val arguments: JKExpressionList, + override val identifier: JKMethodReference) : JKJavaMethodCallExpression, JKElementBase() { + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaMethodCallExpression(this, data) override fun acceptChildren(visitor: JKVisitor, 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 accept(visitor: JKVisitor, data: D): R = visitor.visitJavaFieldAccessExpression(this, data) + + override fun acceptChildren(visitor: JKVisitor, data: D) { + identifier.accept(visitor, data) + } +} + class JKJavaMethodReferenceImpl() : JKJavaMethodReference, JKElementBase() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaMethodReference(this, data) override fun acceptChildren(visitor: JKVisitor, data: D) { + } +} + +class JKJavaFieldReferenceImpl() : JKJavaFieldReference, JKElementBase() { + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaFieldReference(this, data) + + override fun acceptChildren(visitor: JKVisitor, data: D) { + } } \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt index 16529f24ba3..8cfce408fb3 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt @@ -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 diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 757c47d3bf4..21e78e588cc 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -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 } @@ -78,6 +82,10 @@ interface JKMethodReference : JKElement { } +interface JKFieldReference : JKElement { + +} + interface JKOperatorIdentifier : JKIdentifier interface JKQualificationIdentifier : JKIdentifier diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt index 6f3889e05c6..346005394f7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -12,9 +12,11 @@ interface JKVisitor { 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 { 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) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt index a375c3bcae3..3adf0c85c14 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -21,12 +21,16 @@ interface JKVisitorVoid : JKVisitor { 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 { 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)