From 6723bcc1ead0f13cbbbc5460fcdd999e81d42c42 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 4 Oct 2016 14:14:56 +0700 Subject: [PATCH] ExpressionUtils#getAssignment now returns simple assignments only (not compound assignments) --- .../afterAnyMatchCompoundAssignment.java | 13 +++++++++++++ .../beforeAnyMatchCompoundAssignment.java | 17 +++++++++++++++++ .../com/siyeh/ig/psiutils/ExpressionUtils.java | 9 ++++++--- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchCompoundAssignment.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchCompoundAssignment.java diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchCompoundAssignment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchCompoundAssignment.java new file mode 100644 index 000000000000..d6bc498bb566 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchCompoundAssignment.java @@ -0,0 +1,13 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public boolean testAnyMatch(List data) { + int x = 10; + if (data.stream().map(String::trim).anyMatch(String::isEmpty)) { + x *= 2; + } + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchCompoundAssignment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchCompoundAssignment.java new file mode 100644 index 000000000000..e40849018a24 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchCompoundAssignment.java @@ -0,0 +1,17 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public boolean testAnyMatch(List data) { + int x = 10; + for(String str : data) { + String trimmed = str.trim(); + if(trimmed.isEmpty()) { + x *= 2; + break; + } + } + } + +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index 0b2dee272d89..f13c6c8580ee 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -720,10 +720,10 @@ public class ExpressionUtils { /** * Returns assignment expression if supplied element is a statement which contains assignment expression - * or it's an assignment expression itself + * or it's an assignment expression itself. Only simple assignments are returned (like a = b, not a+= b). * * @param element element to get assignment expression from - * @return extracted assignment or null if assignment is not found + * @return extracted assignment or null if assignment is not found or assignment is compound */ @Contract("null -> null") public static PsiAssignmentExpression getAssignment(PsiElement element) { @@ -731,7 +731,10 @@ public class ExpressionUtils { element = ((PsiExpressionStatement)element).getExpression(); } if (element instanceof PsiAssignmentExpression) { - return (PsiAssignmentExpression)element; + PsiAssignmentExpression assignment = (PsiAssignmentExpression)element; + if(assignment.getOperationTokenType().equals(JavaTokenType.EQ)) { + return assignment; + } } return null; }