KT-19355 fix for "Variable expected" error after J2K for increment/decrement of an object field

This commit is contained in:
Alex Chmyr
2019-09-19 17:33:31 +01:00
committed by Ilya Kirillov
parent 748e458ad7
commit b8cce67d2e
11 changed files with 59 additions and 2 deletions
@@ -534,9 +534,16 @@ public class KtPsiUtil {
return ((KtBinaryExpression) parentElement).getRight() == currentInner;
}
//'-(-x)' case
if (parentElement instanceof KtPrefixExpression && innerExpression instanceof KtPrefixExpression) {
return innerOperation == parentOperation && (innerOperation == KtTokens.PLUS || innerOperation == KtTokens.MINUS);
// +(++x) or +(+x) case
if (parentOperation == KtTokens.PLUS) {
return innerOperation == KtTokens.PLUS || innerOperation == KtTokens.PLUSPLUS;
}
// -(--x) or -(-x) case
if (parentOperation == KtTokens.MINUS) {
return innerOperation == KtTokens.MINUS || innerOperation == KtTokens.MINUSMINUS;
}
}
return false;
}
@@ -0,0 +1,3 @@
// IS_APPLICABLE: false
var x = 0
+<caret>(++x)
@@ -0,0 +1,3 @@
// IS_APPLICABLE: false
var x = 0
-<caret>(--x)
@@ -0,0 +1,4 @@
fun foo() {
var x = 0
+<caret>(--x)
}
@@ -0,0 +1,4 @@
fun foo() {
var x = 0
+--x
}
@@ -0,0 +1,4 @@
fun foo() {
var x = 0
-<caret>(++x)
}
@@ -0,0 +1,4 @@
fun foo() {
var x = 0
-++x
}
@@ -14004,11 +14004,26 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses5.kt");
}
@TestMetadata("necessaryParentheses6.kt")
public void testNecessaryParentheses6() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses6.kt");
}
@TestMetadata("necessaryParentheses7.kt")
public void testNecessaryParentheses7() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/necessaryParentheses7.kt");
}
@TestMetadata("unnecessaryParentheses1.kt")
public void testUnnecessaryParentheses1() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses1.kt");
}
@TestMetadata("unnecessaryParentheses10.kt")
public void testUnnecessaryParentheses10() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses10.kt");
}
@TestMetadata("unnecessaryParentheses2.kt")
public void testUnnecessaryParentheses2() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses2.kt");
@@ -14044,6 +14059,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses8.kt");
}
@TestMetadata("unnecessaryParentheses9.kt")
public void testUnnecessaryParentheses9() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParentheses9.kt");
}
@TestMetadata("unnecessaryParenthesesWithComment.kt")
public void testUnnecessaryParenthesesWithComment() throws Exception {
runTest("idea/testData/intentions/removeUnnecessaryParentheses/unnecessaryParenthesesWithComment.kt");
@@ -0,0 +1,2 @@
//expression
-(++i)+(++i)-(--i)+(--i)
@@ -0,0 +1 @@
-++i + ++i - --i + --i
@@ -4080,6 +4080,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew
public void testParenthesized2() throws Exception {
runTest("nj2k/testData/newJ2k/parenthesizedExpression/parenthesized2.java");
}
@TestMetadata("parenthesized3.java")
public void testParenthesized3() throws Exception {
runTest("nj2k/testData/newJ2k/parenthesizedExpression/parenthesized3.java");
}
}
@TestMetadata("nj2k/testData/newJ2k/polyadicExpression")