New J2K: Some changes to assignment expression.
This commit is contained in:
@@ -74,7 +74,11 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
||||
}
|
||||
|
||||
fun PsiAssignmentExpression.toJK(): JKJavaAssignmentExpression {
|
||||
return JKJavaAssignmentExpressionImpl(lExpression.toJK(), rExpression.toJK())
|
||||
return JKJavaAssignmentExpressionImpl(
|
||||
(lExpression.toJK() as? JKFieldAccessExpression ?: error("Its possible?")).identifier,
|
||||
rExpression.toJK(),
|
||||
operationSign.toJK()
|
||||
)
|
||||
}
|
||||
|
||||
fun PsiBinaryExpression.toJK(): JKExpression {
|
||||
@@ -110,7 +114,6 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
||||
|
||||
fun PsiMethodCallExpression.toJK(): JKExpression {
|
||||
val method = methodExpression as PsiReferenceExpressionImpl
|
||||
|
||||
val call = JKJavaMethodCallExpressionImpl(symbolProvider.provideSymbol(method), argumentList.toJK())
|
||||
return if (method.findChildByRole(ChildRole.DOT) != null) {
|
||||
JKQualifiedExpressionImpl((method.qualifier as PsiExpression).toJK(), JKJavaQualifierImpl.DOT, call)
|
||||
|
||||
+3
-4
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.j2k.conversions
|
||||
|
||||
import org.jetbrains.kotlin.j2k.ConversionContext
|
||||
import org.jetbrains.kotlin.j2k.tree.JKExpressionStatement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKJavaAssignmentExpression
|
||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.*
|
||||
@@ -14,17 +15,15 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
class AssignmentAsExpressionToAlsoConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||
|
||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||
if (element !is JKJavaAssignmentExpression) return recurse(element)
|
||||
if (element !is JKJavaAssignmentExpression || element.parent !is JKExpressionStatement) return recurse(element)
|
||||
|
||||
// TODO: Check if inside variable initializer
|
||||
//if (element.parent)
|
||||
|
||||
val alsoElement = resolveFqName(ClassId.fromString("kotlin/also"), element, context) ?: return recurse(element)
|
||||
val alsoSymbol = context.symbolProvider.provideDirectSymbol(alsoElement) as? JKMethodSymbol ?: return recurse(element)
|
||||
element.invalidate()
|
||||
|
||||
return JKQualifiedExpressionImpl(
|
||||
element.rExpression,
|
||||
element.expression,
|
||||
JKKtQualifierImpl.DOT,
|
||||
JKKtCallExpressionImpl(alsoSymbol, JKExpressionListImpl(
|
||||
// TODO: Lambda expression here
|
||||
|
||||
@@ -157,17 +157,6 @@ class JKReturnStatementImpl(expression: JKExpression) : JKBranchElementBase(), J
|
||||
override val expression by child(expression)
|
||||
}
|
||||
|
||||
class JKJavaAssignmentExpressionImpl(
|
||||
lExpression: JKExpression,
|
||||
rExpression: JKExpression/*,
|
||||
TODO operation:? */
|
||||
) : JKBranchElementBase(), JKJavaAssignmentExpression {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaAssignmentExpression(this, data)
|
||||
|
||||
override var lExpression: JKExpression by child(lExpression)
|
||||
override var rExpression: JKExpression by child(rExpression)
|
||||
}
|
||||
|
||||
class JKJavaAssertStatementImpl(condition: JKExpression, description: JKExpression) : JKJavaAssertStatement, JKBranchElementBase() {
|
||||
override val description by child(description)
|
||||
override val condition by child(condition)
|
||||
@@ -202,4 +191,14 @@ class JKJavaPolyadicExpressionImpl(operands: List<JKExpression>, override var to
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaPolyadicExpression(this, data)
|
||||
}
|
||||
|
||||
class JKJavaAssignmentExpressionImpl(
|
||||
override var field: JKFieldSymbol,
|
||||
expression: JKExpression,
|
||||
override var operator: JKOperator
|
||||
) : JKBranchElementBase(), JKJavaAssignmentExpression {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaAssignmentExpression(this, data)
|
||||
|
||||
override var expression: JKExpression by child(expression)
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKClassSymbol
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldSymbol
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKMethodSymbol
|
||||
|
||||
interface JKJavaField : JKField, JKBranchElement
|
||||
@@ -25,11 +26,6 @@ interface JKJavaMethod : JKMethod, JKBranchElement {
|
||||
val block: JKBlock
|
||||
}
|
||||
|
||||
interface JKJavaAssignmentExpression : JKExpression, JKBranchElement {
|
||||
var lExpression: JKExpression
|
||||
var rExpression: JKExpression
|
||||
}
|
||||
|
||||
interface JKJavaMethodCallExpression : JKMethodCallExpression
|
||||
|
||||
interface JKJavaFieldAccessExpression : JKFieldAccessExpression
|
||||
@@ -86,4 +82,10 @@ interface JKJavaPolyadicExpression : JKExpression {
|
||||
var tokens: List<JKOperator>
|
||||
|
||||
fun getTokenBeforeOperand(operand: JKExpression): JKOperator?
|
||||
}
|
||||
|
||||
interface JKJavaAssignmentExpression : JKExpression, JKBranchElement {
|
||||
var field: JKFieldSymbol
|
||||
var expression: JKExpression
|
||||
var operator: JKOperator
|
||||
}
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldSymbol
|
||||
|
||||
interface JKKtProperty : JKField {
|
||||
val getter: JKBlock
|
||||
val setter: JKBlock
|
||||
@@ -29,7 +31,11 @@ interface JKKtConstructor : JKDeclaration
|
||||
|
||||
interface JKKtPrimaryConstructor : JKKtConstructor
|
||||
|
||||
interface JKKtAssignmentStatement : JKStatement
|
||||
interface JKKtAssignmentStatement : JKStatement{
|
||||
var field: JKFieldSymbol
|
||||
var expression: JKExpression
|
||||
var operator: JKOperator
|
||||
}
|
||||
|
||||
interface JKKtCall : JKMethodCallExpression
|
||||
|
||||
|
||||
Reference in New Issue
Block a user