From 0fa3853dfbc68071257b93eefd8a674d5d0c8b41 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 11 Nov 2016 13:24:09 +0700 Subject: [PATCH] IDEA-163767: fixed for assignment, tests for assignment and ternary --- .../OptionalIsPresentInspection.java | 2 +- .../afterAssignmentSelfOrEmpty.java | 11 +++++++++++ .../optionalIsPresent/afterTernarySelfOrEmpty.java | 10 ++++++++++ .../beforeAssignmentSelfOrEmpty.java | 14 ++++++++++++++ .../beforeTernarySelfOrEmpty.java | 10 ++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterAssignmentSelfOrEmpty.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterTernarySelfOrEmpty.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeAssignmentSelfOrEmpty.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeTernarySelfOrEmpty.java diff --git a/java/java-impl/src/com/intellij/codeInspection/OptionalIsPresentInspection.java b/java/java-impl/src/com/intellij/codeInspection/OptionalIsPresentInspection.java index 9efa61efd284..5cedc96d59b4 100644 --- a/java/java-impl/src/com/intellij/codeInspection/OptionalIsPresentInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/OptionalIsPresentInspection.java @@ -321,7 +321,7 @@ public class OptionalIsPresentInspection extends BaseJavaBatchLocalInspectionToo falseAssignment == null || !EquivalenceChecker.getCanonicalPsiEquivalence() .expressionsAreEquivalent(trueAssignment.getLExpression(), falseAssignment.getLExpression()) || - !isOptionalLambdaCandidate(optionalVariable, trueAssignment.getRExpression(), falseAssignment.getLExpression())) { + !isOptionalLambdaCandidate(optionalVariable, trueAssignment.getRExpression(), falseAssignment.getRExpression())) { return false; } return ExpressionUtils.isSimpleExpression(falseAssignment.getRExpression()) || diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterAssignmentSelfOrEmpty.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterAssignmentSelfOrEmpty.java new file mode 100644 index 000000000000..391d66ab72bb --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterAssignmentSelfOrEmpty.java @@ -0,0 +1,11 @@ +// "Replace Optional.isPresent() condition with functional style expression" "true" + +import java.util.*; + +public class Main { + Optional foo(Optional first) { + Optional o; + o = first; + return o; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterTernarySelfOrEmpty.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterTernarySelfOrEmpty.java new file mode 100644 index 000000000000..abd4d40197ba --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterTernarySelfOrEmpty.java @@ -0,0 +1,10 @@ +// "Replace Optional.isPresent() condition with functional style expression" "true" + +import java.util.*; + +public class Main { + Optional foo(Optional first) { + Optional o = first; + return o; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeAssignmentSelfOrEmpty.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeAssignmentSelfOrEmpty.java new file mode 100644 index 000000000000..3bda6425d71d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeAssignmentSelfOrEmpty.java @@ -0,0 +1,14 @@ +// "Replace Optional.isPresent() condition with functional style expression" "true" + +import java.util.*; + +public class Main { + Optional foo(Optional first) { + Optional o; + if (first.isPresent()) + o = first; + else + o = Optional.empty(); + return o; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeTernarySelfOrEmpty.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeTernarySelfOrEmpty.java new file mode 100644 index 000000000000..cfddf0d960ad --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/beforeTernarySelfOrEmpty.java @@ -0,0 +1,10 @@ +// "Replace Optional.isPresent() condition with functional style expression" "true" + +import java.util.*; + +public class Main { + Optional foo(Optional first) { + Optional o = !first.isPresent() ? Optional.empty() : first; + return o; + } +} \ No newline at end of file