From 0df6e1fe7cd0cb919a128f984d1587577d72ead6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89amonn=20McManus?= Date: Tue, 1 Sep 2026 10:29:04 -0700 Subject: [PATCH] Undo a change that disabled part of a check. We had to disable the check that catches, for example, `messageLite.getExtension(Foo.class) != null`. (It is never null.) Some Google code was broken by the new check. That code has now been updated. PiperOrigin-RevId: 974572697 --- .../bugpatterns/ImpossibleNullComparison.java | 27 +----------- .../ImpossibleNullComparisonTest.java | 44 ------------------- 2 files changed, 2 insertions(+), 69 deletions(-) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/ImpossibleNullComparison.java b/core/src/main/java/com/google/errorprone/bugpatterns/ImpossibleNullComparison.java index 929a217f0c9..0caece85abc 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/ImpossibleNullComparison.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/ImpossibleNullComparison.java @@ -122,33 +122,12 @@ public final class ImpossibleNullComparison extends BugChecker private static final ImmutableSet COMPARISON_OPERATORS = Sets.immutableEnumSet(Kind.EQUAL_TO, Kind.NOT_EQUAL_TO); - private static final Matcher EXTENSION_METHODS_WITH_FIX_LEGACY = - instanceMethod() - .onDescendantOf(EXTENDABLE_MESSAGE_CLASS) - .named("getExtension") - .withParameters(EXTENSION_LITE_CLASS); - private static final Matcher EXTENSION_METHODS_WITH_FIX = instanceMethod() .onDescendantOfAny(EXTENDABLE_MESSAGE_CLASS, EXTENDABLE_MESSAGE_LITE_CLASS) .named("getExtension") .withParameters(EXTENSION_LITE_CLASS); - private static final Matcher EXTENSION_METHODS_WITH_NO_FIX_LEGACY = - anyOf( - instanceMethod() - .onDescendantOf(MESSAGE_OR_BUILDER_CLASS) - .named("getRepeatedField") - .withParameters(FIELD_DESCRIPTOR_CLASS, "int"), - instanceMethod() - .onDescendantOf(EXTENDABLE_MESSAGE_CLASS) - .named("getExtension") - .withParameters(EXTENSION_LITE_CLASS, "int"), - instanceMethod() - .onDescendantOf(MESSAGE_OR_BUILDER_CLASS) - .named("getField") - .withParameters(FIELD_DESCRIPTOR_CLASS)); - private static final Matcher EXTENSION_METHODS_WITH_NO_FIX = anyOf( instanceMethod() @@ -593,12 +572,10 @@ private String generateFix( if (!protoReceiver(checkOrBuilder).matches(tree, state)) { return null; } - if ((checkOrBuilder ? EXTENSION_METHODS_WITH_NO_FIX : EXTENSION_METHODS_WITH_NO_FIX_LEGACY) - .matches(tree, state)) { + if (EXTENSION_METHODS_WITH_NO_FIX.matches(tree, state)) { return GetterTypes::emptyFix; } - if ((checkOrBuilder ? EXTENSION_METHODS_WITH_FIX : EXTENSION_METHODS_WITH_FIX_LEGACY) - .matches(tree, state)) { + if (EXTENSION_METHODS_WITH_FIX.matches(tree, state)) { // If the extension represents a repeated field (i.e.: it's an ExtensionLite>), // the suggested fix from get->has isn't appropriate,so we shouldn't suggest a replacement diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/ImpossibleNullComparisonTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/ImpossibleNullComparisonTest.java index b4fa6fad017..80ed912d692 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/ImpossibleNullComparisonTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/ImpossibleNullComparisonTest.java @@ -689,48 +689,4 @@ public void test(TestProtoMessageOrBuilder orBld) { """) .doTest(); } - - @Test - public void liteExtendableMessage_flagEnabled() { - compilationHelper - .addSourceLines( - "Test.java", - """ - import com.google.protobuf.ExtensionLite; - import com.google.protobuf.GeneratedMessageLite; - - public class Test { - public static , Type> - void test( - GeneratedMessageLite.ExtendableMessage msg, - ExtensionLite extension) { - // BUG: Diagnostic contains: msg.hasExtension(extension) - if (msg.getExtension(extension) != null) {} - } - } - """) - .doTest(); - } - - @Test - public void liteExtendableMessage_flagDisabled() { - compilationHelper - .setArgs("-XepOpt:ImpossibleNullComparison:CheckOrBuilder=false") - .addSourceLines( - "Test.java", - """ - import com.google.protobuf.ExtensionLite; - import com.google.protobuf.GeneratedMessageLite; - - public class Test { - public static , Type> - void test( - GeneratedMessageLite.ExtendableMessage msg, - ExtensionLite extension) { - if (msg.getExtension(extension) != null) {} - } - } - """) - .doTest(); - } }