diff --git a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/MethodUtils.java b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/MethodUtils.java index e13478ffcf66..ac5f935f7c34 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/MethodUtils.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/MethodUtils.java @@ -37,7 +37,9 @@ import java.util.regex.Pattern; public final class MethodUtils { private static final Set CAN_IGNORE_RETURN_VALUE_ANNOTATIONS = Set.of( - "org.assertj.core.util.CanIgnoreReturnValue", "com.google.errorprone.annotations.CanIgnoreReturnValue"); + "org.assertj.core.util.CanIgnoreReturnValue", + "org.assertj.core.annotation.CanIgnoreReturnValue", + "com.google.errorprone.annotations.CanIgnoreReturnValue"); private MethodUtils() {} diff --git a/java/java-tests/testSrc/com/siyeh/ig/bugs/IgnoreResultOfCallInspectionTest.java b/java/java-tests/testSrc/com/siyeh/ig/bugs/IgnoreResultOfCallInspectionTest.java index 0e0de69463d0..97745929bf7c 100644 --- a/java/java-tests/testSrc/com/siyeh/ig/bugs/IgnoreResultOfCallInspectionTest.java +++ b/java/java-tests/testSrc/com/siyeh/ig/bugs/IgnoreResultOfCallInspectionTest.java @@ -129,6 +129,15 @@ public class IgnoreResultOfCallInspectionTest extends LightJavaInspectionTestCas @Retention(value=CLASS) public @interface CanIgnoreReturnValue{} """, + """ + package org.assertj.core.annotation; + import java.lang.annotation.ElementType; + import java.lang.annotation.Retention; + import java.lang.annotation.RetentionPolicy; + import java.lang.annotation.Target; + @Target({CONSTRUCTOR,METHOD,PACKAGE,TYPE}) + public @interface CanIgnoreReturnValue{} + """, """ package org.apache.commons.lang3; public class Validate { @@ -338,6 +347,27 @@ public class IgnoreResultOfCallInspectionTest extends LightJavaInspectionTestCas """); } + public void testCanIgnoreReturnValue4() { + doTest(""" + import org.assertj.core.annotation.CanIgnoreReturnValue; + import javax.annotation.CheckReturnValue; + + @CheckReturnValue + class Test { + int lookAtMe() { return 1; } + + @CanIgnoreReturnValue + int ignoreMe() { return 2; } + + void run() { + /*Result of 'Test.lookAtMe()' is ignored*/lookAtMe/**/(); // Bad! This line should produce a warning. + ignoreMe(); // OK. This line should *not* produce a warning. + } + }"""); + } + + + public void testCustomCheckReturnValue() { doTest(""" import a.CheckReturnValue;