Releases: typetools/checker-framework
Checker Framework 3.30.0
Checker Framework 3.29.0
Version 3.29.0 (January 5, 2023)
User-visible changes:
Dropped support for -ApermitUnsupportedJdkVersion
command-line argument. You can now run the Checker Framework under any JDK version, without a warning.
Pass -Astubs=permit-nullness-assertion-exception.astub
to not be warned about null pointer exceptions within nullness assertion methods like Objects.requireNonNull
.
Pass -Astubs=sometimes-nullable.astub
to unsoundly permit passing null to calls if null is sometimes but not always permitted.
Closed issues:
#5412, #5431, #5435, #5438, #5447, #5450, #5453, #5471, #5472, #5487.
Checker Framework 3.28.0
Checker Framework 3.27.0
Checker Framework 3.26.0
Version 3.26.0 (October 3, 2022)
User-visible changes:
The Checker Framework runs under JDK 18 -- that is, it runs on a version 18 JVM.
(It worked before, but gave a warning that it was not tested.)
Annotations are available for some new JDK 17 APIs (some of those
introduced since JDK 11).
Added -AnoWarnMemoryConstraints
to change the "Memory constraints are impeding
performance; please increase max heap size" message from a warning to a note.
'unneeded.suppression' warnings can now themeselves be suppressed.
Implementation details:
Deprecated TreeUtils.constructor()
in favor of TreeUtils.elementFromUse()
.
Added method isSideEffectFree()
to the AnnotationProvider
interface.
Deprecated CFAbstractStore.isSideEffectFree()
in favor of new method
AnnotationProvider.isSideEffectFree()
. Note the different contracts of
PurityUtils.isSideEffectFree()
and AnnotationProvider.isSideEffectFree()
.
Use TreeUtils.elementFromDeclaration
and TreeUtils.elementFromUse
in
preference to TreeUtils.elementFromTree
, when possible.
For code formatting, use ./gradlew spotlessCheck
and ./gradlew spotlessApply
.
The checkFormat
and reformat
Gradle tasks have been removed.
Removed variable BaseTypeVisitor.inferPurity
.
Closed issues:
Checker Framework 3.25.0
Version 3.25.0 (September 1, 2022)
User-visible changes:
Make mustcall.not.inheritable
a warning rather than an error
The Property File Checker, Internationalization Checker, and Compiler Message Checker use File.pathSeparator
to separate property file paths in -Apropfiles
, rather than ':'.
Added DoNothingChecker
that does nothing.
Closed issues:
Checker Framework 3.24.0
Checker Framework 3.23.0
Version 3.23.0 (July 11, 2022)
User-visible changes:
By default, command-line argument -AstubWarnIfNotFound
is treated as true for stub files provided on the command line and false for built-in stub files. Use -AstubWarnIfNotFound
to enable it for all stub files, and use new -AstubNoWarnIfNotFound
to disable it for all stub files.
New command-line argument -ApermitStaticOwning
suppresses Resource Leak Checker warnings related to static owning fields.
New command-line argument -ApermitInitializationLeak
suppresses Resource Leak Checker warnings related to field initialization.
Closed issues:
Checker Framework 3.22.1
Checker Framework 3.22.0
Version 3.22.0 (May 2, 2022)
User-visible changes:
The Signedness Checker now checks calls to equals()
as well as to ==
. When two formal parameter types are annotated with @PolySigned, the two arguments at a call site must have the same signedness type annotation. (This differs from the standard rule for polymorphic qualifiers.)
Implementation details:
When passed a NewClassTree that creates an anonymous constructor, AnnotatedTypeFactory#constructorFromUse
now returns the type of the anonymous constructor rather than the type of the super constructor invoked in the anonymous classes constructor. If the super constructor has explicit annotations, they are copied to the anonymous classes constructor.
Closed issues:
#5113.