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 {
|
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 {
|
fun PsiBinaryExpression.toJK(): JKExpression {
|
||||||
@@ -110,7 +114,6 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
|
|
||||||
fun PsiMethodCallExpression.toJK(): JKExpression {
|
fun PsiMethodCallExpression.toJK(): JKExpression {
|
||||||
val method = methodExpression as PsiReferenceExpressionImpl
|
val method = methodExpression as PsiReferenceExpressionImpl
|
||||||
|
|
||||||
val call = JKJavaMethodCallExpressionImpl(symbolProvider.provideSymbol(method), argumentList.toJK())
|
val call = JKJavaMethodCallExpressionImpl(symbolProvider.provideSymbol(method), argumentList.toJK())
|
||||||
return if (method.findChildByRole(ChildRole.DOT) != null) {
|
return if (method.findChildByRole(ChildRole.DOT) != null) {
|
||||||
JKQualifiedExpressionImpl((method.qualifier as PsiExpression).toJK(), JKJavaQualifierImpl.DOT, call)
|
JKQualifiedExpressionImpl((method.qualifier as PsiExpression).toJK(), JKJavaQualifierImpl.DOT, call)
|
||||||
|
|||||||
+3
-4
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.j2k.conversions
|
package org.jetbrains.kotlin.j2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ConversionContext
|
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.JKJavaAssignmentExpression
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.j2k.tree.JKTreeElement
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.*
|
import org.jetbrains.kotlin.j2k.tree.impl.*
|
||||||
@@ -14,17 +15,15 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
class AssignmentAsExpressionToAlsoConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
class AssignmentAsExpressionToAlsoConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||||
|
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
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 alsoElement = resolveFqName(ClassId.fromString("kotlin/also"), element, context) ?: return recurse(element)
|
||||||
val alsoSymbol = context.symbolProvider.provideDirectSymbol(alsoElement) as? JKMethodSymbol ?: return recurse(element)
|
val alsoSymbol = context.symbolProvider.provideDirectSymbol(alsoElement) as? JKMethodSymbol ?: return recurse(element)
|
||||||
element.invalidate()
|
element.invalidate()
|
||||||
|
|
||||||
return JKQualifiedExpressionImpl(
|
return JKQualifiedExpressionImpl(
|
||||||
element.rExpression,
|
element.expression,
|
||||||
JKKtQualifierImpl.DOT,
|
JKKtQualifierImpl.DOT,
|
||||||
JKKtCallExpressionImpl(alsoSymbol, JKExpressionListImpl(
|
JKKtCallExpressionImpl(alsoSymbol, JKExpressionListImpl(
|
||||||
// TODO: Lambda expression here
|
// TODO: Lambda expression here
|
||||||
|
|||||||
@@ -157,17 +157,6 @@ class JKReturnStatementImpl(expression: JKExpression) : JKBranchElementBase(), J
|
|||||||
override val expression by child(expression)
|
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() {
|
class JKJavaAssertStatementImpl(condition: JKExpression, description: JKExpression) : JKJavaAssertStatement, JKBranchElementBase() {
|
||||||
override val description by child(description)
|
override val description by child(description)
|
||||||
override val condition by child(condition)
|
override val condition by child(condition)
|
||||||
@@ -203,3 +192,13 @@ class JKJavaPolyadicExpressionImpl(operands: List<JKExpression>, override var to
|
|||||||
|
|
||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaPolyadicExpression(this, data)
|
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
|
package org.jetbrains.kotlin.j2k.tree
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKClassSymbol
|
import org.jetbrains.kotlin.j2k.tree.impl.JKClassSymbol
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldSymbol
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKMethodSymbol
|
import org.jetbrains.kotlin.j2k.tree.impl.JKMethodSymbol
|
||||||
|
|
||||||
interface JKJavaField : JKField, JKBranchElement
|
interface JKJavaField : JKField, JKBranchElement
|
||||||
@@ -25,11 +26,6 @@ interface JKJavaMethod : JKMethod, JKBranchElement {
|
|||||||
val block: JKBlock
|
val block: JKBlock
|
||||||
}
|
}
|
||||||
|
|
||||||
interface JKJavaAssignmentExpression : JKExpression, JKBranchElement {
|
|
||||||
var lExpression: JKExpression
|
|
||||||
var rExpression: JKExpression
|
|
||||||
}
|
|
||||||
|
|
||||||
interface JKJavaMethodCallExpression : JKMethodCallExpression
|
interface JKJavaMethodCallExpression : JKMethodCallExpression
|
||||||
|
|
||||||
interface JKJavaFieldAccessExpression : JKFieldAccessExpression
|
interface JKJavaFieldAccessExpression : JKFieldAccessExpression
|
||||||
@@ -87,3 +83,9 @@ interface JKJavaPolyadicExpression : JKExpression {
|
|||||||
|
|
||||||
fun getTokenBeforeOperand(operand: JKExpression): 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
|
package org.jetbrains.kotlin.j2k.tree
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldSymbol
|
||||||
|
|
||||||
interface JKKtProperty : JKField {
|
interface JKKtProperty : JKField {
|
||||||
val getter: JKBlock
|
val getter: JKBlock
|
||||||
val setter: JKBlock
|
val setter: JKBlock
|
||||||
@@ -29,7 +31,11 @@ interface JKKtConstructor : JKDeclaration
|
|||||||
|
|
||||||
interface JKKtPrimaryConstructor : JKKtConstructor
|
interface JKKtPrimaryConstructor : JKKtConstructor
|
||||||
|
|
||||||
interface JKKtAssignmentStatement : JKStatement
|
interface JKKtAssignmentStatement : JKStatement{
|
||||||
|
var field: JKFieldSymbol
|
||||||
|
var expression: JKExpression
|
||||||
|
var operator: JKOperator
|
||||||
|
}
|
||||||
|
|
||||||
interface JKKtCall : JKMethodCallExpression
|
interface JKKtCall : JKMethodCallExpression
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user