Skip to content

Commit 9601a3c

Browse files
klueverError Prone Team
authored andcommitted
Delete fix that suggests using Guava's deprecated Object.equal() method.
PiperOrigin-RevId: 892774368
1 parent 1e227c5 commit 9601a3c

2 files changed

Lines changed: 9 additions & 56 deletions

File tree

core/src/main/java/com/google/errorprone/bugpatterns/AbstractReferenceEquality.java

Lines changed: 7 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,22 @@
2020
import static com.google.errorprone.dataflow.nullnesspropagation.Nullness.NULL;
2121
import static com.google.errorprone.matchers.Matchers.instanceEqualsInvocation;
2222
import static com.google.errorprone.matchers.Matchers.staticEqualsInvocation;
23-
import static java.util.Arrays.stream;
2423

2524
import com.google.errorprone.VisitorState;
2625
import com.google.errorprone.bugpatterns.BugChecker.BinaryTreeMatcher;
2726
import com.google.errorprone.dataflow.nullnesspropagation.Nullness;
2827
import com.google.errorprone.fixes.Fix;
2928
import com.google.errorprone.fixes.SuggestedFix;
29+
import com.google.errorprone.fixes.SuggestedFixes;
3030
import com.google.errorprone.matchers.Description;
3131
import com.google.errorprone.matchers.Matcher;
3232
import com.google.errorprone.util.ASTHelpers;
33-
import com.google.errorprone.util.FindIdentifiers;
3433
import com.sun.source.tree.BinaryTree;
3534
import com.sun.source.tree.ExpressionTree;
3635
import com.sun.source.tree.MethodInvocationTree;
3736
import com.sun.source.tree.Tree;
3837
import com.sun.source.tree.Tree.Kind;
3938
import com.sun.source.util.TreePath;
40-
import com.sun.tools.javac.code.Kinds.KindSelector;
41-
import com.sun.tools.javac.code.Symbol;
42-
import com.sun.tools.javac.code.Symbol.TypeSymbol;
43-
import com.sun.tools.javac.code.Type;
44-
import com.sun.tools.javac.util.Name;
4539
import java.util.List;
4640
import java.util.Optional;
4741

@@ -84,26 +78,6 @@ public final Description matchBinary(BinaryTree tree, VisitorState state) {
8478
return builder.build();
8579
}
8680

87-
private static boolean symbolsTypeHasName(Symbol sym, String name) {
88-
if (sym == null) {
89-
return false;
90-
}
91-
Type type = sym.type;
92-
if (type == null) {
93-
return false;
94-
}
95-
TypeSymbol tsym = type.tsym;
96-
if (tsym == null) {
97-
return false;
98-
}
99-
Name typeName = tsym.getQualifiedName();
100-
if (typeName == null) {
101-
// Probably shouldn't happen, but might as well check
102-
return false;
103-
}
104-
return typeName.contentEquals(name);
105-
}
106-
10781
protected void addFixes(Description.Builder builder, BinaryTree tree, VisitorState state) {
10882
ExpressionTree lhs = tree.getLeftOperand();
10983
ExpressionTree rhs = tree.getRightOperand();
@@ -129,13 +103,12 @@ protected void addFixes(Description.Builder builder, BinaryTree tree, VisitorSta
129103

130104
// If the lhs is possibly-null, provide both options.
131105
if (nullness != NONNULL) {
132-
Symbol existingObjects = FindIdentifiers.findIdent("Objects", state, KindSelector.TYP);
133-
ObjectsFix preferredFix =
134-
stream(ObjectsFix.values())
135-
.filter(f -> symbolsTypeHasName(existingObjects, f.className))
136-
.findFirst()
137-
.orElse(ObjectsFix.JAVA_UTIL);
138-
builder.addFix(preferredFix.fix(tree, prefix, lhsSource, rhsSource));
106+
SuggestedFix.Builder fix = SuggestedFix.builder();
107+
String objects = SuggestedFixes.qualifyType(state, fix, "java.util.Objects");
108+
builder.addFix(
109+
fix.replace(
110+
tree, String.format("%s%s.equals(%s, %s)", prefix, objects, lhsSource, rhsSource))
111+
.build());
139112
}
140113
if (nullness != NULL) {
141114
builder.addFix(
@@ -149,26 +122,6 @@ protected void addFixes(Description.Builder builder, BinaryTree tree, VisitorSta
149122
}
150123
}
151124

152-
private enum ObjectsFix {
153-
JAVA_UTIL("java.util.Objects", "Objects.equals"),
154-
GUAVA("com.google.common.base.Objects", "Objects.equal");
155-
156-
private final String className;
157-
private final String methodName;
158-
159-
ObjectsFix(String className, String methodName) {
160-
this.className = className;
161-
this.methodName = methodName;
162-
}
163-
164-
SuggestedFix fix(BinaryTree tree, String prefix, String lhsSource, String rhsSource) {
165-
return SuggestedFix.builder()
166-
.replace(tree, String.format("%s%s(%s, %s)", prefix, methodName, lhsSource, rhsSource))
167-
.addImport(className)
168-
.build();
169-
}
170-
}
171-
172125
private static Optional<Fix> inOrStatementWithEqualsCheck(VisitorState state, BinaryTree tree) {
173126
// Only attempt to handle a == b || a.equals(b);
174127
if (tree.getKind() == Kind.NOT_EQUAL_TO) {

core/src/test/java/com/google/errorprone/bugpatterns/OptionalEqualityTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ public void maybeNull_prefersAlreadyImportedHelper() {
115115
class Test {
116116
boolean f(Optional<Integer> a) {
117117
Optional<Integer> b = Optional.of(42);
118-
// BUG: Diagnostic contains: Did you mean 'return Objects.equal(a, b);' or 'return
119-
// a.equals(b);'?
118+
// BUG: Diagnostic contains: Did you mean 'return java.util.Objects.equals(a, b);'
119+
// or 'return a.equals(b);'?
120120
return a == b;
121121
}
122122
}

0 commit comments

Comments
 (0)