From 661f7d16685bdefbbbcbddd54a6eb70f9d04b237 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 8 Mar 2018 19:35:56 +0100 Subject: [PATCH] simplifiable assertion: don't assume types are compatible EA-117420 - NPE: SimplifiableAssertionInspection$SimplifyAssertFix.replaceAssertLiteralWithAssertEquals --- .../SimplifiableAssertionInspection.java | 20 +++++++++---------- ...oEqualsBetweenIncompatibleTypes.after.java | 12 +++++++++++ .../TrueToEqualsBetweenIncompatibleTypes.java | 11 ++++++++++ .../SimplifiableJUnitAssertionFixTest.java | 1 + 4 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.java diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/testFrameworks/SimplifiableAssertionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/testFrameworks/SimplifiableAssertionInspection.java index e688563aea39..b64834b14f39 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/testFrameworks/SimplifiableAssertionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/testFrameworks/SimplifiableAssertionInspection.java @@ -256,18 +256,18 @@ public abstract class SimplifiableAssertionInspection extends BaseInspection { final PsiType lhsType = lhs.getType(); final PsiType rhsType = rhs.getType(); if (lhsType != null && rhsType != null && PsiUtil.isLanguageLevel5OrHigher(lhs)) { - if (isPrimitiveAndBoxedWithOverloads(lhsType, rhsType)) { - final PsiPrimitiveType unboxedType = PsiPrimitiveType.getUnboxedType(rhsType); - assert unboxedType != null; - buf.append(lhs.getText()).append(",(").append(unboxedType.getCanonicalText()).append(')').append(rhs.getText()); - } - else if (isPrimitiveAndBoxedWithOverloads(rhsType, lhsType)) { - final PsiPrimitiveType unboxedType = PsiPrimitiveType.getUnboxedType(lhsType); - assert unboxedType != null; - buf.append('(').append(unboxedType.getCanonicalText()).append(')').append(lhs.getText()).append(',').append(rhs.getText()); + final PsiPrimitiveType rhsUnboxedType = PsiPrimitiveType.getUnboxedType(rhsType); + if (isPrimitiveAndBoxedWithOverloads(lhsType, rhsType) && rhsUnboxedType != null) { + buf.append(lhs.getText()).append(",(").append(rhsUnboxedType.getCanonicalText()).append(')').append(rhs.getText()); } else { - buf.append(lhs.getText()).append(',').append(rhs.getText()); + final PsiPrimitiveType unboxedType = PsiPrimitiveType.getUnboxedType(lhsType); + if (isPrimitiveAndBoxedWithOverloads(rhsType, lhsType) && unboxedType != null) { + buf.append('(').append(unboxedType.getCanonicalText()).append(')').append(lhs.getText()).append(',').append(rhs.getText()); + } + else { + buf.append(lhs.getText()).append(',').append(rhs.getText()); + } } } else { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.after.java new file mode 100644 index 000000000000..b2a22406597e --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.after.java @@ -0,0 +1,12 @@ +import org.junit.*; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class JUnit4TestCase { + + @Test + public void testOne() { + assertEquals("1", 1); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.java new file mode 100644 index 000000000000..fa2e921c74ba --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/junit/simplifiable_junit_assertion/TrueToEqualsBetweenIncompatibleTypes.java @@ -0,0 +1,11 @@ +import org.junit.*; + +import static org.junit.Assert.assertTrue; + +public class JUnit4TestCase { + + @Test + public void testOne() { + assertTrue("1".equals(1)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/junit/SimplifiableJUnitAssertionFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/junit/SimplifiableJUnitAssertionFixTest.java index d7f5af1719dd..61b2972423cf 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/junit/SimplifiableJUnitAssertionFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/junit/SimplifiableJUnitAssertionFixTest.java @@ -32,6 +32,7 @@ public class SimplifiableJUnitAssertionFixTest extends IGQuickFixesTestCase { public void testDoublePrimitive() { doTest(); } public void testEqualsToTrueJUnit5() { doTest(); } public void testTrueToEqualsJUnit5() { doTest(); } + public void testTrueToEqualsBetweenIncompatibleTypes() { doTest(); } public void testFalseToNotEqualsJUnit4() { doTest(); } @Override