IG: fix false negative with switch expression (IDEA-203709)

This commit is contained in:
Bas Leijdekkers
2018-12-06 13:02:00 +01:00
parent 9e86a35047
commit ba48ec7de0
3 changed files with 13 additions and 4 deletions
@@ -19,4 +19,10 @@ class BigDecimalEquals {
System.out.println("equals");
}
}
boolean test(int x, BigDecimal d1, BigDecimal d2) {
return switch(x) {
default -> d1.compareTo(d2) == 0;
};
}
}
@@ -19,4 +19,10 @@ class BigDecimalEquals {
System.out.println("equals");
}
}
boolean test(int x, BigDecimal d1, BigDecimal d2) {
return switch(x) {
default -> d1.equals(d2);
};
}
}
@@ -19,9 +19,7 @@ import com.intellij.codeInsight.Nullability;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.dataFlow.NullabilityUtil;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiExpressionStatement;
import com.intellij.psi.PsiMethodCallExpression;
import com.intellij.psi.util.PsiTreeUtil;
import com.siyeh.InspectionGadgetsBundle;
@@ -93,8 +91,7 @@ public class BigDecimalEqualsInspection extends BaseInspection {
PsiExpression right = check.getRight();
if (!ExpressionUtils.hasType(left, "java.math.BigDecimal")) return;
if (!ExpressionUtils.hasType(right, "java.math.BigDecimal")) return;
final PsiElement context = expression.getParent();
if (context instanceof PsiExpressionStatement) {
if (ExpressionUtils.isVoidContext(expression)) {
//cheesy, but necessary, because otherwise the quickfix will
// produce uncompilable code (out of merely incorrect code).
return;