Java: Improved highlighting mode in the inspection "Replace with Objects.equals()" (IDEA-193783)

This commit is contained in:
Pavel Dolgov
2018-06-18 12:24:45 +03:00
parent ae20525fe0
commit e03e71ce9f
7 changed files with 84 additions and 84 deletions
@@ -2091,7 +2091,7 @@ dangling.javadoc.delete.quickfix=Remove dangling comment
equals.replaceable.by.objects.call.display.name='equals()' expression replaceable by 'Objects.equals()' expression
equals.replaceable.by.objects.call.problem.descriptor=<code>#ref</code> replaceable by 'Objects.equals()' expression #loc
equals.replaceable.by.objects.call.quickfix=Replace with 'Objects.equals()' expression
equals.replaceable.by.objects.check.not.null.option=Report only null safe 'equals' calls
equals.replaceable.by.objects.check.not.null.option=Highlight expressions like 'a != null \\&\\& a.equals(b)'
array.objects.equals.display.name='Objects.equals()' called on arrays
array.objects.equals.problem.descriptor=<code>Objects.#ref()</code> on arrays should probably be 'Arrays.equals()' #loc
array.objects.deep.equals.problem.descriptor=<code>Objects.#ref()</code> on arrays should probably be 'Arrays.deepEquals()' #loc
@@ -16,6 +16,7 @@
package com.siyeh.ig.migration;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
@@ -42,7 +43,7 @@ import javax.swing.*;
* @author Bas Leijdekkers
*/
public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
public boolean checkNotNull = true;
public boolean checkNotNull;
private static final EquivalenceChecker EQUIVALENCE = new NoSideEffectExpressionEquivalenceChecker();
@@ -141,16 +142,14 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
return;
}
}
if (!checkNotNull) {
if (qualifierExpression == null) {
return;
}
final PsiExpression argumentExpression = getArgumentExpression(expression);
if (argumentExpression == null) {
return;
}
registerError(expression, qualifierExpression.getText(), argumentExpression.getText(), true);
if (qualifierExpression == null) {
return;
}
final PsiExpression argumentExpression = getArgumentExpression(expression);
if (argumentExpression == null) {
return;
}
registerError(expression, ProblemHighlightType.INFORMATION, qualifierExpression.getText(), argumentExpression.getText(), true);
}
private boolean processNotNullCheck(PsiBinaryExpression expression) {
@@ -219,7 +218,10 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection {
final PsiExpression argumentExpression = getArgumentExpression(methodCallExpression);
if (argumentExpression != null) {
final PsiExpression expressionToReplace = checkEqualityBefore(expression, equal, qualifierExpression, argumentExpression);
registerError(expressionToReplace, nullCheckedExpression.getText(), argumentExpression.getText(), Boolean.valueOf(equal));
ProblemHighlightType highlightType = checkNotNull || expression != expressionToReplace ?
ProblemHighlightType.GENERIC_ERROR_OR_WARNING : ProblemHighlightType.INFORMATION;
registerError(expressionToReplace, highlightType,
nullCheckedExpression.getText(), argumentExpression.getText(), Boolean.valueOf(equal));
return true;
}
}
@@ -2,12 +2,16 @@
<body>
Reports expressions that can be replaced with a call to <code>java.util.Objects.equals()</code>, which is available since JDK 1.7.
For example:
<code><pre>a != <b>null</b> <b>&&</b> a.equals(b)</pre></code>
<p>
<code><pre>a == b || a != <b>null</b> && a.equals(b)</pre></code>
<br>
<code><pre>a != <b>null</b> ? a.equals(b) : b == <b>null</b></pre></code>
</p>
<!-- tooltip end -->
<p>
If <code>a.equals(b)</code> isn't preceded with <code>a != <b>null</b></code>, replacing it with <code>Objects.equals(a, b)</code>
still makes sense, but slightly changes the semantics. For the cases where only equivalent replacement is needed, there's
the check box <i>Report only null safe 'equals' calls</i> to enforce that.
Replacing expressions like <code><pre>a != null && a.equals(b)</pre></code> with
<code><pre>Objects.equals(a, b)</pre></code> slightly changes the semantics,
but if that's what you need there's a check box for that in the inspection settings.
<p>
This inspection only applies to projects and modules configured to use a language level of 7 or higher.
</body>
@@ -1,41 +1,41 @@
class EqualsReplaceableByObjectsCall {
void yyy(Object a, Object b) {
boolean c = <warning descr="'(a != null) && a.equals(b)' replaceable by 'Objects.equals()' expression">(a != null) && a.equals(b)</warning>;
boolean c = <info descr="'(a != null) && a.equals(b)' replaceable by 'Objects.equals()' expression">(a != null) && a.equals(b)</info>;
boolean d = <warning descr="'(a != b) && (a == null || !a.equals(b))' replaceable by 'Objects.equals()' expression">(a != b) && (a == null || !a.equals(b))</warning>;
boolean e = <warning descr="'((a) == (b)) || ((a) != (null) && (a).equals((b)))' replaceable by 'Objects.equals()' expression">((a) == (b)) || ((a) != (null) && (a).equals((b)))</warning>;
}
void ignoreNullityCheck(Object a, Object b) {
boolean c = <warning descr="'a.equals(b)' replaceable by 'Objects.equals()' expression">a.equals(b)</warning>;
boolean c = <info descr="'a.equals(b)' replaceable by 'Objects.equals()' expression">a.equals(b)</info>;
}
void bar(T x, T y, T z) {
boolean b = !<warning descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</warning>;
boolean c = <warning descr="'x.s != null && x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s != null && x.s.equals(y.s)</warning>;
boolean d = y.s != null && <warning descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</warning>;
boolean e = <warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>;
boolean b = !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
boolean c = <info descr="'x.s != null && x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s != null && x.s.equals(y.s)</info>;
boolean d = y.s != null && <info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
boolean e = <info descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</info>;
boolean f = <warning descr="'x.s != y.s && (x.s == null || !x.s.equals(y.s))' replaceable by 'Objects.equals()' expression">x.s != y.s && (x.s == null || !x.s.equals(y.s))</warning>;
boolean g = x.s != y.s || (<warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>);
boolean h = x.s != y.s && (z.s == null || !<warning descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</warning>);
boolean g = x.s != y.s || (<info descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</info>);
boolean h = x.s != y.s && (z.s == null || !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>);
}
void baz(T x, T y) {
boolean b = <warning descr="'x.copy().equals(y.copy())' replaceable by 'Objects.equals()' expression">x.copy().equals(y.copy())</warning>;
boolean c = <warning descr="'x != null && x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x != null && x.equals(y.copy())</warning>;
boolean d = <warning descr="'x == null || !x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x == null || !x.equals(y.copy())</warning>;
boolean e = x.copy() != null && <warning descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</warning>;
boolean f = x.copy() == null || !<warning descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</warning>;
boolean g = x.copy().s != null && <warning descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</warning>;
boolean h = x.copy().s == null || !<warning descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</warning>;
boolean i = x.s == y.copy().s || <warning descr="'(x).s != null && (x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s != null && (x.s).equals(y.copy().s)</warning>;
boolean j = x.s != y.copy().s && (<warning descr="'(x).s == null || !(x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s == null || !(x.s).equals(y.copy().s)</warning>);
boolean b = <info descr="'x.copy().equals(y.copy())' replaceable by 'Objects.equals()' expression">x.copy().equals(y.copy())</info>;
boolean c = <info descr="'x != null && x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x != null && x.equals(y.copy())</info>;
boolean d = <info descr="'x == null || !x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x == null || !x.equals(y.copy())</info>;
boolean e = x.copy() != null && <info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
boolean f = x.copy() == null || !<info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
boolean g = x.copy().s != null && <info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
boolean h = x.copy().s == null || !<info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
boolean i = x.s == y.copy().s || <info descr="'(x).s != null && (x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s != null && (x.s).equals(y.copy().s)</info>;
boolean j = x.s != y.copy().s && (<info descr="'(x).s == null || !(x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s == null || !(x.s).equals(y.copy().s)</info>);
}
void arr(T[] a, T[] b, int i) {
boolean c = <warning descr="'a[i] != null && a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] != null && a[i].equals(b[i])</warning>;
boolean c = <info descr="'a[i] != null && a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] != null && a[i].equals(b[i])</info>;
boolean d = <warning descr="'a[i] == null ? b[i] == null : a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] == null ? b[i] == null : a[i].equals(b[i])</warning>;
boolean e = a[i++] != null && <warning descr="'a[i++].equals(b[i++])' replaceable by 'Objects.equals()' expression">a[i++].equals(b[i++])</warning>;
boolean f = a[--i] != null && <warning descr="'a[--i].equals(b[--i])' replaceable by 'Objects.equals()' expression">a[--i].equals(b[--i])</warning>;
boolean e = a[i++] != null && <info descr="'a[i++].equals(b[i++])' replaceable by 'Objects.equals()' expression">a[i++].equals(b[i++])</info>;
boolean f = a[--i] != null && <info descr="'a[--i].equals(b[--i])' replaceable by 'Objects.equals()' expression">a[--i].equals(b[--i])</info>;
}
static class T {
@@ -64,10 +64,10 @@ class EqualsReplaceableByObjectsCall {
}
}
static boolean ab1(String s) {
return <warning descr="'A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b.equals(s)</warning>;
return <info descr="'A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b.equals(s)</info>;
}
static boolean ab2(String s) {
return <warning descr="'A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b != null && A.b.equals(s)</warning>;
return <info descr="'A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b != null && A.b.equals(s)</info>;
}
static boolean ab3(String s) {
return <warning descr="'A.b == s || A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b == s || A.b != null && A.b.equals(s)</warning>;
@@ -101,7 +101,7 @@ class EqualsReplaceableByObjectsCall {
static final String NULL_CONSTANT = null;
boolean nullConstant(Object o) {
return <warning descr="'NULL_CONSTANT.equals(o)' replaceable by 'Objects.equals()' expression">NULL_CONSTANT.equals(o)</warning>;
return <info descr="'NULL_CONSTANT.equals(o)' replaceable by 'Objects.equals()' expression">NULL_CONSTANT.equals(o)</info>;
}
static final Object NEW_CONSTANT = new Object();
@@ -139,28 +139,28 @@ class EqualsReplaceableByObjectsCall {
return <warning descr="'(s != null) ? (!s.equals(t.s)) : !(t.s == null)' replaceable by 'Objects.equals()' expression">(s != null) ? (!s.equals(t.s)) : !(t.s == null)</warning>;
}
boolean notMatches1(Ternary t) {
return s == null ? t.s != null : <warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>;
return s == null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
}
boolean notMatches2(Ternary t) {
return s != null ? t.s != null : <warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>;
return s != null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
}
boolean notMatches3(Ternary t) {
return ((s != null) ? !(<warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>) : (t.s == null));
return ((s != null) ? !(<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>) : (t.s == null));
}
boolean notMatches4(Ternary t) {
return s == null ? t.s == null : !<warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning>;
return s == null ? t.s == null : !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
}
boolean notMatches5(Ternary t) {
return s != null ? <warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning> : t.s != null;
return s != null ? <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
}
boolean notMatches6(Ternary t) {
return s == null ? !<warning descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</warning> : t.s != null;
return s == null ? !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
}
boolean notMatches7(Ternary t) {
return s == null ? t.s == null : <warning descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</warning>;
return s == null ? t.s == null : <info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>;
}
boolean notMatches8(Ternary t) {
return (s != null) ? (<warning descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</warning>) : (t.s == null);
return (s != null) ? (<info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>) : (t.s == null);
}
}
}
@@ -6,27 +6,27 @@ class EqualsReplaceableByObjectsCall {
}
void ignoreNullityCheck(Object a, Object b) {
boolean c = a.equals(b);
boolean c = <info descr="'a.equals(b)' replaceable by 'Objects.equals()' expression">a.equals(b)</info>;
}
void bar(T x, T y, T z) {
boolean b = !x.s.equals(y.s);
boolean b = !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
boolean c = <warning descr="'x.s != null && x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s != null && x.s.equals(y.s)</warning>;
boolean d = y.s != null && x.s.equals(y.s);
boolean d = y.s != null && <info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>;
boolean e = <warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>;
boolean f = <warning descr="'x.s != y.s && (x.s == null || !x.s.equals(y.s))' replaceable by 'Objects.equals()' expression">x.s != y.s && (x.s == null || !x.s.equals(y.s))</warning>;
boolean g = x.s != y.s || (<warning descr="'x.s == null || !x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s == null || !x.s.equals(y.s)</warning>);
boolean h = x.s != y.s && (z.s == null || !x.s.equals(y.s));
boolean h = x.s != y.s && (z.s == null || !<info descr="'x.s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.s.equals(y.s)</info>);
}
void baz(T x, T y) {
boolean b = x.copy().equals(y.copy());
boolean b = <info descr="'x.copy().equals(y.copy())' replaceable by 'Objects.equals()' expression">x.copy().equals(y.copy())</info>;
boolean c = <warning descr="'x != null && x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x != null && x.equals(y.copy())</warning>;
boolean d = <warning descr="'x == null || !x.equals(y.copy())' replaceable by 'Objects.equals()' expression">x == null || !x.equals(y.copy())</warning>;
boolean e = x.copy() != null && x.copy().equals(y);
boolean f = x.copy() == null || !x.copy().equals(y);
boolean g = x.copy().s != null && x.copy().s.equals(y.s);
boolean h = x.copy().s == null || !x.copy().s.equals(y.s);
boolean e = x.copy() != null && <info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
boolean f = x.copy() == null || !<info descr="'x.copy().equals(y)' replaceable by 'Objects.equals()' expression">x.copy().equals(y)</info>;
boolean g = x.copy().s != null && <info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
boolean h = x.copy().s == null || !<info descr="'x.copy().s.equals(y.s)' replaceable by 'Objects.equals()' expression">x.copy().s.equals(y.s)</info>;
boolean i = x.s == y.copy().s || <warning descr="'(x).s != null && (x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s != null && (x.s).equals(y.copy().s)</warning>;
boolean j = x.s != y.copy().s && (<warning descr="'(x).s == null || !(x.s).equals(y.copy().s)' replaceable by 'Objects.equals()' expression">(x).s == null || !(x.s).equals(y.copy().s)</warning>);
}
@@ -34,8 +34,8 @@ class EqualsReplaceableByObjectsCall {
void arr(T[] a, T[] b, int i) {
boolean c = <warning descr="'a[i] != null && a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] != null && a[i].equals(b[i])</warning>;
boolean d = <warning descr="'a[i] == null ? b[i] == null : a[i].equals(b[i])' replaceable by 'Objects.equals()' expression">a[i] == null ? b[i] == null : a[i].equals(b[i])</warning>;
boolean e = a[i++] != null && a[i++].equals(b[i++]);
boolean f = a[--i] != null && a[--i].equals(b[--i]);
boolean e = a[i++] != null && <info descr="'a[i++].equals(b[i++])' replaceable by 'Objects.equals()' expression">a[i++].equals(b[i++])</info>;
boolean f = a[--i] != null && <info descr="'a[--i].equals(b[--i])' replaceable by 'Objects.equals()' expression">a[--i].equals(b[--i])</info>;
}
static class T {
@@ -64,7 +64,7 @@ class EqualsReplaceableByObjectsCall {
}
}
static boolean ab1(String s) {
return A.b.equals(s);
return <info descr="'A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b.equals(s)</info>;
}
static boolean ab2(String s) {
return <warning descr="'A.b != null && A.b.equals(s)' replaceable by 'Objects.equals()' expression">A.b != null && A.b.equals(s)</warning>;
@@ -91,28 +91,28 @@ class EqualsReplaceableByObjectsCall {
return <warning descr="'(s != null) ? (!s.equals(t.s)) : !(t.s == null)' replaceable by 'Objects.equals()' expression">(s != null) ? (!s.equals(t.s)) : !(t.s == null)</warning>;
}
boolean notMatches1(Ternary t) {
return s == null ? t.s != null : s.equals(t.s);
return s == null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
}
boolean notMatches2(Ternary t) {
return s != null ? t.s != null : s.equals(t.s);
return s != null ? t.s != null : <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
}
boolean notMatches3(Ternary t) {
return ((s != null) ? !(s.equals(t.s)) : (t.s == null));
return ((s != null) ? !(<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>) : (t.s == null));
}
boolean notMatches4(Ternary t) {
return s == null ? t.s == null : !s.equals(t.s);
return s == null ? t.s == null : !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info>;
}
boolean notMatches5(Ternary t) {
return s != null ? s.equals(t.s) : t.s != null;
return s != null ? <info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
}
boolean notMatches6(Ternary t) {
return s == null ? !s.equals(t.s) : t.s != null;
return s == null ? !<info descr="'s.equals(t.s)' replaceable by 'Objects.equals()' expression">s.equals(t.s)</info> : t.s != null;
}
boolean notMatches7(Ternary t) {
return s == null ? t.s == null : t.s.equals(s);
return s == null ? t.s == null : <info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>;
}
boolean notMatches8(Ternary t) {
return (s != null) ? (t.s.equals(s)) : (t.s == null);
return (s != null) ? (<info descr="'t.s.equals(s)' replaceable by 'Objects.equals()' expression">t.s.equals(s)</info>) : (t.s == null);
}
}
}
@@ -27,16 +27,14 @@ import com.siyeh.ig.migration.EqualsReplaceableByObjectsCallInspection;
*/
public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase {
private EqualsReplaceableByObjectsCallInspection myInspection;
public void testSimpleEquals() { doTest(); }
public void testSimpleNotEquals() { doTest(); }
public void testSimpleEquals() { doTestNoNullCheck(); }
public void testSimpleNotEquals() { doTestNoNullCheck(); }
public void testQualifiedArgument() { doTestNoNullCheck(); }
public void testQualifiedArgument() { doTest(); }
public void testQualifiedReciever() { doTest(); }
public void testExpressionReciever() { doTestNoNullCheck(); }
public void testExpressionArgument() { doTestNoNullCheck(); }
public void testExpressionReciever() { doTest(); }
public void testExpressionArgument() { doTest(); }
public void testExpressionArgument2() { doTest(); }
public void testLongEquals() { doTest(); }
@@ -44,8 +42,8 @@ public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase
public void testShortEquals() { doTest(); }
public void testShortNotEquals() { doTest(); }
public void testSuperEquals() { doTestNoNullCheck(); }
public void testThisEquals() { doTestNoNullCheck(); }
public void testSuperEquals() { doTest(); }
public void testThisEquals() { doTest(); }
public void testQualifiedThisNotEqual() { doTest(); }
public void testQualifiedSuperEqual() { doTest(); }
@@ -68,14 +66,8 @@ public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase
@Override
public void setUp() throws Exception {
super.setUp();
myInspection = new EqualsReplaceableByObjectsCallInspection();
myFixture.enableInspections(myInspection);
myFixture.enableInspections(new EqualsReplaceableByObjectsCallInspection());
myRelativePath = "migration/equals_replaceable_by_objects_call";
myDefaultHint = InspectionGadgetsBundle.message("equals.replaceable.by.objects.call.quickfix");
}
private void doTestNoNullCheck() {
myInspection.checkNotNull = false;
doTest();
}
}
@@ -54,7 +54,9 @@ public class EqualsReplaceableByObjectsCallInspectionTest extends LightInspectio
boolean oldNotNull = myInspection.checkNotNull;
try {
myInspection.checkNotNull = checkNotNull;
doTest();
myFixture.configureByFile(getTestName(false) + ".java");
myFixture.testHighlighting(true, true, false);
}
finally {
myInspection.checkNotNull = oldNotNull;