diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceof.java b/core/src/main/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceof.java index 9842d71e6138..d461743fe39b 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceof.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceof.java @@ -20,7 +20,6 @@ import static com.google.errorprone.matchers.Description.NO_MATCH; import static com.google.errorprone.util.ASTHelpers.getSymbol; import static com.google.errorprone.util.ASTHelpers.getType; -import static com.google.errorprone.util.ASTHelpers.isSameType; import static com.google.errorprone.util.SourceVersion.supportsPatternMatchingInstanceof; import com.google.common.collect.ImmutableSet; @@ -76,7 +75,7 @@ public Description matchIf(IfTree tree, VisitorState state) { instanceofChecks.stream() .filter( i -> - isSameType(getType(i.getType()), getType(typeCast.getType()), state) + state.getTypes().isSameType(getType(i.getType()), getType(typeCast.getType())) && getSymbol(i.getExpression()) instanceof VarSymbol && getSymbol(i.getExpression()).equals(getSymbol(typeCast.getExpression()))) .findFirst() diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceofTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceofTest.java index 57ee03e09a3c..b6a5bec5f217 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceofTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/PatternMatchingInstanceofTest.java @@ -148,4 +148,23 @@ public void differentVariable() { .expectUnchanged() .doTest(); } + + @Test + public void generic() { + helper + .addInputLines( + "Test.java", + "import java.util.Map;", + "class Test {", + " void test(Object x, String k) {", + " if (x instanceof Map) {", + " @SuppressWarnings(\"unchecked\")", + " Map m = (Map) x;", + " System.err.println(m.get(k));", + " }", + " }", + "}") + .expectUnchanged() + .doTest(); + } }