Releases: typetools/checker-framework
Checker Framework 3.21.3
Checker Framework 3.21.2
Version 3.21.2 (February 1, 2022)
User-visible changes:
The wpi.sh
script supports non-standard names for build system compile targets via the new -c
command-line option.
The Checker Framework now more precisely computes and checks the type of the pattern variable in a pattern match instanceof.
Implementation details:
Deprecated CFGLambda.getMethod{Name} in favor of getEnclosingMethod{Name}.
Closed issues:
#4615, #4993, #5006, #5007, #5008, #5013, #5016, #5021.
Checker Framework 3.21.1
Checker Framework 3.21.0
Version 3.21.0 (December 17, 2021)
User-visible changes:
The Checker Framework now more precisely computes the type of a switch expression.
Implementation details:
The dataflow framework now analyzes switch expressions and switch statements that use the new ->
case syntax. To do so, a new node, SwitchExpressionNode, was added.
Checker Framework 3.20.0
Version 3.20.0 (December 6, 2021)
User-visible changes:
The Checker Framework now runs on code that contains switch expressions and switch statements that use the new ->
case syntax, but treats them conservatively. A future version will improve precision.
Implementation details:
The dataflow framework can be run on code that contains switch expressions and switch statements that use the new ->
case syntax, but it does not yet analyze the cases in a switch expression and it treats ->
as :
. A future version will do so.
Removed methods and classes that have been deprecated for more than one year:
- Old way of constructing qualifier hierarchies
@SuppressWarningsKeys
RegularBlock.getContents()
TestUtilities.testBooleanProperty()
CFAbstractTransfer.getValueWithSameAnnotations()
Checker Framework 3.19.0
Version 3.19.0 (November 1, 2021)
User-visible changes:
The Checker Framework runs under JDK 17 -- that is, it runs on a version 17 JVM. The Checker Framework also continues to run under JDK 8 and JDK 11. New command-line argument -ApermitUnsupportedJdkVersion
lets you run the Checker Framework on any JDK (version 8 or greater) without a warning about an unsupported JDK version. The Checker Framework does not yet run on code that contains switch expressions.
Implementation details:
Removed org.checkerframework.framework.type.VisitorState
Removed AnnotatedTypeFactory#postTypeVarSubstitution
Deprecated methods in AnnotatedTypeFactory:
getCurrentClassTree
getCurrentMethodReceiver
Checker Framework 3.18.1
Checker Framework 3.18.0
Checker Framework 3.17.0
Version 3.17.0 (August 2, 2021)
User-visible changes:
-Ainfer
can now infer postcondition annotations that reference formal parameters (e.g. "#1"
, "#2"
) and the receiver ("this"
).
Implementation details:
Method renamings and signature changes (old methods are removed) in GenericAnnotatedTypeFactory
:
getPreconditionAnnotation(VariableElement, AnnotatedTypeMirror)
=>getPreconditionAnnotations(String, AnnotatedTypeMirror, AnnotatedTypeMirror)
getPostconditionAnnotation(VariableElement, AnnotatedTypeMirror, List<AnnotationMirror>)
=>getPostconditionAnnotations(String, AnnotatedTypeMirror, AnnotatedTypeMirror, List<AnnotationMirror>)
getPreOrPostconditionAnnotation(VariableElement, AnnotatedTypeMirror, Analysis.BeforeOrAfter, List<AnnotationMirror>)
=>getPreOrPostconditionAnnotations(String, AnnotatedTypeMirror, AnnotatedTypeMirror, Analysis.BeforeOrAfter, List<AnnotationMirror>)
requiresOrEnsuresQualifierAnno(VariableElement, AnnotationMirror, Analysis.BeforeOrAfter)
=>createRequiresOrEnsuresQualifier(String, AnnotationMirror, AnnotatedTypeMirror, Analysis.BeforeOrAfter, List<AnnotationMirror>)
Method renamings and signature changes (old method is removed) in WholeProgramInferenceStorage
:
getPreOrPostconditionsForField(Analysis.BeforeOrAfter, ExecutableElement, VariableElement, AnnotatedTypeFactory)
=>getPreOrPostconditions(Analysis.BeforeOrAfter, ExecutableElement, String, AnnotatedTypeMirror, AnnotatedTypeFactory)
Method renamings:
CFAbstractAnalysis.getFieldValues
=>getFieldInitialValues
The following methods no longer take a fieldValues
parameter:
GenericAnnotatedTypeFactory#createFlowAnalysis
CFAnalysis
constructorCFAbstractAnalysis#performAnalysis
CFAbstractAnalysis
constructors
Closed issues:
#4685, #4689, #4785, #4805, #4806, #4815, #4829, #4849.
Checker Framework 3.16.0
Version 3.16.0 (July 13, 2021)
User-visible changes:
You can run the Checker Framework on a JDK 16 JVM. You can pass the --release 16
command-line argument to the compiler. You may need to add additional command-line options, such as --add-opens
; see the Checker Framework manual. New syntax, such as records and switch expressions, is not yet supported or type-checked; that will be added in a future release. Thanks to Neil Brown for the JDK 16 support.
The Lock Checker supports a new type, @NewObject
, for the result of a constructor invocation.
The -Ainfer
command-line argument now outputs purity annotations even if neither -AsuggestPureMethods
nor AcheckPurityAnnotations
is supplied on the command line.
Implementation details:
Method renamings (the old methods remain but are deprecated):
AnnotationFileElementTypes.getDeclAnnotation
=>getDeclAnnotations
Method renamings (the old methods were removed):
AnnotatedTypeMirror.clearAnnotations =>
clearPrimaryAnnotations`
Method renamings in DefaultTypeHierarchy
(the old methods were removed):
visitIntersectionSupertype
=>visitIntersectionSupertype
visitIntersectionSubtype
=>visitIntersection_Type
visitUnionSubtype
=>visitUnion_Type
visitTypevarSubtype
=>visitTypevar_Type
visitTypevarSupertype
=>visitType_Typevar
visitWildcardSubtype
=>visitWildcard_Type
visitWildcardSupertype
=>visitType_Wildcard
Method renamings in AnnotatedTypes
(the old methods were removed):
expandVarArgs
=>expandVarArgsParameters
expandVarArgsFromTypes
=>expandVarArgsParametersFromTypes