diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AssignmentExpressionUnfoldingConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AssignmentExpressionUnfoldingConversion.kt index fb188ee35ab..9e619f1dcc1 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AssignmentExpressionUnfoldingConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AssignmentExpressionUnfoldingConversion.kt @@ -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 diff --git a/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.java b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.java new file mode 100644 index 00000000000..99bf475ef3e --- /dev/null +++ b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.java @@ -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); + } +} \ No newline at end of file diff --git a/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.kt b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.kt new file mode 100644 index 00000000000..43568bbda7c --- /dev/null +++ b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority.kt @@ -0,0 +1,10 @@ +object J { + @JvmStatic + fun main(args: Array) { + val a = false + val b = true + var c = false + c = c and (a || b) + print(c) + } +} diff --git a/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.java b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.java new file mode 100644 index 00000000000..d386a14560a --- /dev/null +++ b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.java @@ -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); + } +} \ No newline at end of file diff --git a/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.kt b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.kt new file mode 100644 index 00000000000..2dd52e53e51 --- /dev/null +++ b/nj2k/testData/newJ2k/assignmentExpression/compoundAssignmentPriority2.kt @@ -0,0 +1,10 @@ +object J { + @JvmStatic + fun main(args: Array) { + val a = 0 + val b = 1 + var c = 2 + c = c xor (a and b) + print(c) + } +} diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index 638a6396e08..f6aa9a2ab11 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -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");