checker-framework
checker-framework copied to clipboard
Pluggable type-checking for Java
Thanks for submitting an issue. As explained in the instructions for submitting an issue at https://checkerframework.org/manual/#reporting-bugs, please include four pieces of information: * commands (that can be cut-and-pasted into a...
To reproduce: ``` git clone https://github.com/kennknowles/beam --branch checkerframework-StructuralEqualityComparer cd beam ./gradlew :sdks:java:core:compileJava ``` Output: ``` error: StructuralEqualityComparer: unexpected combination: type: [TYPEVAR class org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedTypeVariable] OutputT extends Object supertype: [WILDCARD class org.checkerframework.framework.type.AnnotatedTypeMirror$AnnotatedWildcardType]...
The Resource Leak Checker does not accept this code: ```java static void method() { // error: [required.method.not.called] @MustCall method close may not have been invoked on new Resource() close(new Resource());...
Agreed that we need such an annotation and that we can do it in a follow-up to this PR. I would strongly prefer to have at least an alias for...
When adding the default ignored exception type functionality, in my mind I was primarily thinking about cases where the exceptional edge for the call went directly to the method exit,...
Test is here: https://github.com/typetools/checker-framework/blob/f4161743d5ba63f8388ee625f9e3f0eaf9ad7153/checker/tests/resourceleak/MustCallAliasNormalExit.java#L60-L71 I believe the RLC should be able to analyze the different paths separately and not report a warning here.
```java public void interningLongs(List list) { for (long i : list) { long unused = Math.addExact(i, 0L); } } ``` For the above code, the Interning Checker reports ``` error:...
I have two methods in utilityclass ```java @EnsuresNonNullIf(expression = "#1", result = true) public static boolean isOne(@Nullable Integer value) { return Objects.equals(value, 1); } @EnsuresNonNullIf(expression = "#1", result = true)...
Commit d70dd7436fa9a6706db40be85978ac4dd04d2a18 introduces a false negative, in its use of `CFAbstractStore.insertValuePermitNondeterministic()`. Consider this test case: ```java import java.util.Optional; class PureGetterTest2 { Optional otherOptional() { if (Math.random() < 0.5) { return...