Skip to content

Releases: typetools/checker-framework

Checker Framework 3.1.1

03 Feb 18:44
Compare
Choose a tag to compare

Version 3.1.1, February 3, 2020

New command-line options:
-AassumeDeterministic Unsoundly assume that every method is deterministic
-AassumePure Unsoundly assume that every method is pure

Renamed -Anocheckjdk to -ApermitMissingJdk. The old version still works, for backward compatibility.

Renamed -Alint=forbidnonnullarraycomponents to -Alint=soundArrayCreationNullness. The old version still works, for backward compatibility.

Implementation details:

  • Deprecated QualifierHierarchy#getTypeQualifiers.
  • Deprecated Analysis#Analysis(ProcessingEnvironment) and Analysis#Analysis(T, int, ProcessingEnvironment); use Analysis#Analysis(), Analysis#Analysis(int), Analysis#Analysis(T), and Analysis#Analysis(T, int) instead.

Closed issues:

2181, 2975, 3018, 3022, 3032, 3036, 3037, 3038, 3041, 3049, 3055, 3076.

Checker Framework 3.1.0

03 Jan 21:39
Compare
Choose a tag to compare

Version 3.1.0, January 3, 2020

Command-line option -AprintGitProperties prints information about the git repository from which the Checker Framework was compiled.

Implementation details:

  • Removed static cache in AnnotationUtils#areSameByClass and added
    AnnotatedTypeFactory#areSameByClass that uses an instance cache.
  • Removed static cache in AnnotationBuilder#fromName and #fromClass.
  • ContractsUtils#getPreconditions takes an ExecutableElement as an argument.
  • ContractsUtils#getContracts returns a Set.
  • Moved ContractUtils.Contract to outer level.
  • Renamed ConditionalPostcondition#annoResult to ConditionalPostcondition#resultValue.

Closed issues:

2867, 2897, 2972.

Checker Framework 3.0.1

02 Dec 23:15
Compare
Choose a tag to compare

Version 3.0.1, December 2, 2019

New command-line option for the Constant Value Checker -AnoNullStringsConcatenation unsoundly assumes that every operand of a String concatenation is non-null.

Implementation details:

  • Moved AnnotatedTypes#hasTypeQualifierElementTypes to AnnotationUtils.
  • Deprecated AnnotatedTypes#isTypeAnnotation and AnnotatedTypes#hasTypeQualifierElementTypes.

Closed issues:

945, 1224, 2024, 2744, 2809, 2815, 2818, 2830, 2840, 2853, 2854, 2865, 2873, 2874, 2878, 2880, 2886, 2888, 2900, 2905, 2919, 2923.

Checker Framework 3.0.0

01 Nov 22:42
Compare
Choose a tag to compare

Version 3.0.0, November 1, 2019

The Checker Framework works on both JDK 8 and JDK 11.

  • Type annotations for JDK 8 remain in jdk8.jar.
  • Type annotations for JDK 11 appear in stub files in checker.jar.

Removed the @PolyAll annotation.

Implementation details:

  • Removed all previously deprecated methods.
  • AnnotatedTypeFactory#getFnInterfaceFromTree now returns an AnnotatedExecutableType.
  • AnnotationUtils#areSame and #areSameByName now only accept non-null AnnotationMirrors

Closed issues:
1169, 1654, 2081, 2703, 2739, 2749, 2779, 2781, 2798, 2820, 2824, 2829, 2842, 2845, 2848.

Checker Framework 2.11.1

01 Oct 18:47
Compare
Choose a tag to compare

Version 2.11.1, October 1, 2019

The manual links to the Object Construction Checker.

Closed issues:
1635, 2718, 2767.

Checker Framework 2.11.0

31 Aug 04:34
Compare
Choose a tag to compare

Version 2.11.0, August 30, 2019

The Checker Framework now uses the Java 9 javac API. The manual describes
how to satisfy this dependency, in a way that works on a Java 8 JVM.
Running the Checker Framework on a Java 9 JVM is not yet supported.

Checker Framework 2.10.1

22 Aug 20:27
Compare
Choose a tag to compare

Version 2.10.1, August 22, 2019

Closed issues:
1152, 1614, 2031, 2482, 2543, 2587, 2678, 2686, 2690, 2712, 2717, 2713, 2721, 2725, 2729.

Checker Framework 2.10.0

01 Aug 19:46
Compare
Choose a tag to compare

Version 2.10.0, August 1, 2019

Removed the NullnessRawnessChecker. Use the NullnessChecker instead.

Closed issues:
435, 939, 1430, 1687, 1771, 1902, 2173, 2345, 2470, 2534, 2606, 2613, 2619, 2633, 2638.

Checker Framework 2.9.0

03 Jul 17:24
Compare
Choose a tag to compare

Version 2.9.0, July 3, 2019

Renamed the Signedness Checker's @Constant annotation to @SignednessGlb.
Introduced an alias, @SignedPositive, for use by programmers.

Annotated the first argument of Opt.get and Opt.orElseThrow as @NonNull.

Removed meta-annotation @ImplicitFor:

  • Use the new meta-annotation @QualifierForLiteral to replace @ImplicitFor(literals, stringpatterns).
  • Use the meta-annotation @DefaultFor to replace @ImplicitFor(typeKinds, types).
  • Use the new meta-annotation @UpperBoundFor to specify a qualifier upper bound for certain types.
  • You can completely remove @ImplicitFor(typeNames = Void.class, literals = LiteralKind.NULL) on bottom qualifiers. @DefaultFor(types = Void.class) and @QualifierForLiterals(literals = LiteralKind.NULL) are added to the bottom qualifier by default.

Added @DefaultQualifierOnUse and @NoDefaultQualifierOnUse type declaration annotations

New/changed error message keys:

  • initialization.static.fields.uninitialized for uninitialized static fields
  • unary.increment.type.incompatible and unary.decrement.type.incompatible
    replace some occurrences of compound.assignment.type.incompatible

Implementation details:

  • Renamed QualifierPolymorphism#annotate methods to resolve
  • Renamed ImplicitsTreeAnnotator to LiteralTreeAnnotator
  • Renamed ImplicitsTypeAnnotator to DefaultForTypeAnnotator
  • Removed TypeUseLocation.TYPE_DECLARATION
  • Removed InheritedFromClassAnnotator, replace with DefaultQualifierForUseTypeAnnotator
  • Rename TreeUtils.isSuperCall and TreeUtils.isThisCall to isSuperConstructorCall and isThisConstructorCall

Closed issues:
2247, 2391, 2409, 2434, 2451, 2457, 2468, 2484, 2485, 2493, 2505, 2536, 2537, 2540, 2541, 2564, 2565, 2585.

Checker Framework 2.8.2

03 Jun 17:49
Compare
Choose a tag to compare

Version 2.8.2, June 3, 2019

The Signature Checker supports a new type, @FqBinaryName.

Added a template for a repository that you can use to write a custom checker.

Linked to the Checker Framework Gradle plugin, which makes it easy to run a checker on a project that is built using the Gradle build tool.

Implementation detail: deprecated TreeUtils.skipParens in favor of TreeUtils.withoutParens which has the same specification.

Closed issues:
2291, 2291, 2406, 2406, 2469, 2469, 2477, 2477, 2479, 2479, 2480, 2480, 2494, 2494, 2499, 2499.