From c59599a125f6db969ad13a2617c4a0958a6d9913 Mon Sep 17 00:00:00 2001 From: David Schlosnagle Date: Fri, 31 Mar 2023 22:57:38 -0400 Subject: [PATCH 1/2] Fix #2543 CardinalityEqualsZero equality comparison check --- .../errorprone/CardinalityEqualsZero.java | 7 +++++- .../errorprone/CardinalityEqualsZeroTest.java | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/CardinalityEqualsZero.java b/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/CardinalityEqualsZero.java index 778bd25f7..0507c5f5a 100644 --- a/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/CardinalityEqualsZero.java +++ b/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/CardinalityEqualsZero.java @@ -31,7 +31,9 @@ import com.sun.source.tree.ExpressionTree; import com.sun.source.tree.IdentifierTree; import com.sun.source.tree.MemberSelectTree; +import com.sun.source.tree.Tree.Kind; import java.util.Collection; +import java.util.Objects; import java.util.Optional; import org.immutables.value.Value.Immutable; @@ -58,8 +60,11 @@ public Description matchBinary(BinaryTree tree, VisitorState state) { EqualsZeroExpression equalsZeroExpression = maybeEqualsZeroExpression.get(); ExpressionTree operand = equalsZeroExpression.operand(); - ExpressionTree collectionInstance = ASTHelpers.getReceiver(operand); + if (!Objects.equals(operand.getKind(), Kind.METHOD_INVOCATION)) { + return Description.NO_MATCH; + } + ExpressionTree collectionInstance = ASTHelpers.getReceiver(operand); if (collectionInstance == null || isExpressionThis(collectionInstance)) { return Description.NO_MATCH; } diff --git a/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/CardinalityEqualsZeroTest.java b/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/CardinalityEqualsZeroTest.java index 3742f0440..ee89eef68 100644 --- a/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/CardinalityEqualsZeroTest.java +++ b/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/CardinalityEqualsZeroTest.java @@ -266,6 +266,28 @@ public void test_size_on_non_collection() { .doTest(); } + @Test + public void test_equals_on_non_collection() { + fix().addInputLines( + "TestNonCollection.java", + "class TestNonCollection {", + " public int size() {", + " return 0;", + " }", + " public boolean foo(String key) {", + " String current = \"x\";", + " int comparisonResult = current.compareTo(key);", + " if (comparisonResult == 0) {", + " return true;", + " } else {", + " return false;", + " }", + " }", + "}") + .expectUnchanged() + .doTest(); + } + @Test public void test_qualified_this() { fix().addInputLines( From 33948e0c29fe8e13299db91768c5f81d9a5cf007 Mon Sep 17 00:00:00 2001 From: svc-changelog Date: Sat, 1 Apr 2023 03:19:57 +0000 Subject: [PATCH 2/2] Add generated changelog entries --- changelog/@unreleased/pr-2544.v2.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/@unreleased/pr-2544.v2.yml diff --git a/changelog/@unreleased/pr-2544.v2.yml b/changelog/@unreleased/pr-2544.v2.yml new file mode 100644 index 000000000..1e4a05ea4 --- /dev/null +++ b/changelog/@unreleased/pr-2544.v2.yml @@ -0,0 +1,5 @@ +type: fix +fix: + description: 'Fix #2543 CardinalityEqualsZero equality comparison check' + links: + - https://github.com/palantir/gradle-baseline/pull/2544