Releases: typetools/checker-framework
Checker Framework 3.32.0
Version 3.32.0 (March 2, 2023)
User-visible changes:
Fixed a bug in the Nullness Checker where a call to a side-effecting method did not make some formal parameters possibly-null. The Nullness Checker is likely to issue more warnings for your code. For ways to eliminate the new warnings, see https://checkerframework.org/manual/#type-refinement-side-effects .
If you supply the -AinvocationPreservesArgumentNullness
command-line option, the Nullness Checker unsoundly assumes that arguments passed to non-null parameters in an invocation remain non-null after the invocation. This assumption is unsound in general, but it holds for most code.
Implementation details:
Moved TreeUtils.isAutoGeneratedRecordMember(Element)
to ElementUtils
.
Renamed TreeUtils.instanceOfGetPattern()
to TreeUtils.instanceOfTreeGetPattern()
.
Deprecated AnnotatedTypes#isExplicitlySuperBounded
and AnnotatedTypes#isExplicitlyExtendsBounded
because they are duplicates of #hasExplicitSuperBound
and #hasExplicitExtendsBound
.
Checker Framework 3.31.0
Version 3.31.0 (February 17, 2023)
User-visible changes:
Command-line argument -AshowPrefixInWarningMessages
puts the checker name on the first line of each warning and error message.
Signedness Checker changes:
- Cast expressions are not subject to type refinement. When a programmer writes a cast such as
(@Signed int) 2
, it is not refined to@SignednessGlb
and cannot be used in an unsigned context. - When incompatible arguments are passed to
@PolySigned
formal parameters, the error is expressed in terms of@SignednessBottom
rather than the greatest lower bound of the argument types.
Implementation details:
Moved AnnotationMirrorSet
and AnnotationMirrorMap
from org.checkerframework.framework.util
to org.checkerframework.javacutil
.
Changed uses of Set<AnnotationMirror>
to AnnotationMirrorSet
including in APIs.
Removed methods from AnnotationUtils that are no longer useful:
createAnnotationMap
, createAnnotationSet
, createUnmodifiableAnnotationSet
.
Closed issues:
#5597.
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: