New J2K: correctly convert compound Java assignment expression
#KT-35476 fixed
This commit is contained in:
+2
-2
@@ -6,8 +6,8 @@
|
||||
package org.jetbrains.kotlin.nj2k.conversions
|
||||
|
||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||
import org.jetbrains.kotlin.nj2k.parenthesizeIfBinaryExpression
|
||||
import org.jetbrains.kotlin.nj2k.tree.*
|
||||
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
class AssignmentExpressionUnfoldingConversion(context: NewJ2kConverterContext) : RecursiveApplicableConversionBase(context) {
|
||||
@@ -141,7 +141,7 @@ class AssignmentExpressionUnfoldingConversion(context: NewJ2kConverterContext) :
|
||||
field,
|
||||
JKBinaryExpression(
|
||||
field.copyTreeAndDetach(),
|
||||
expression,
|
||||
expression.parenthesizeIfBinaryExpression(),
|
||||
JKKtOperatorImpl(
|
||||
onlyJavaAssignTokensToKotlinOnes[operator.token]!!,
|
||||
operator.returnType
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
public class J {
|
||||
public static void main(String[] args) {
|
||||
boolean a = false, b = true, c = false;
|
||||
c &= a || b;
|
||||
System.out.print(c);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
object J {
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
val a = false
|
||||
val b = true
|
||||
var c = false
|
||||
c = c and (a || b)
|
||||
print(c)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
public class J {
|
||||
public static void main(String[] args) {
|
||||
int a = 0, b = 1, c = 2;
|
||||
c ^= a & b;
|
||||
System.out.print(c);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
object J {
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
val a = 0
|
||||
val b = 1
|
||||
var c = 2
|
||||
c = c xor (a and b)
|
||||
print(c)
|
||||
}
|
||||
}
|
||||
+10
@@ -441,6 +441,16 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew
|
||||
runTest("nj2k/testData/newJ2k/assignmentExpression/bitOperationPriorityComments.java");
|
||||
}
|
||||
|
||||
@TestMetadata("compoundAssignmentPriority.java")
|
||||
public void testCompoundAssignmentPriority() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.java");
|
||||
}
|
||||
|
||||
@TestMetadata("compoundAssignmentPriority2.java")
|
||||
public void testCompoundAssignmentPriority2() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.java");
|
||||
}
|
||||
|
||||
@TestMetadata("declarationAssignmentsChain.java")
|
||||
public void testDeclarationAssignmentsChain() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/assignmentExpression/declarationAssignmentsChain.java");
|
||||
|
||||
Reference in New Issue
Block a user