Checker Framework 3.49.1-eisop1
Version 3.49.1-eisop1 (March 17, 2025)
User-visible changes:
The Nullness Checker now reports an error if any instanceof pattern variables
are annotated with @Nullable and a redundant warning if they are annotated
with @NonNull.
Implementation details:
Fixed intersection of wildcards with extends bounds, to ensure the correct
bounds are used.
Closed issues:
Version 3.49.1 (March 3, 2025)
Closed issues:
typetools#6970, typetools#6974.
Version 3.49.0 (February 3, 2025)
User-visible changes:
The Optional Checker is more precise for Optional values resulting from
operations on container types (e.g., List, Map, Iterable). It supports
two new annotations:
@NonEmpty@UnknownNonEmpty
The Signature Checker no longer supports @BinaryNameWithoutPackage because
it is equivalent to @Identifier; use @Identifier instead.
The JavaStubifier implementation now appears in package
org.checkerframework.framework.stubifier.JavaStubifier.
Closed issues:
typetools#6935, typetools#6936, typetools#6939.
Version 3.48.4 (January 2, 2025)
Closed issues:
typetools#6919, typetools#6630.
Version 3.48.3 (December 2, 2024)
Closed issues:
Version 3.48.2 (November 1, 2024)
Closed issues:
typetools#6371, typetools#6867.
Version 3.48.1 (October 11, 2024)
User-visible changes:
The Returns Receiver sub-checker is now disabled by default when running
the Resource Leak Checker, as usually it is not needed and it adds overhead.
To enable it, use the new -AenableReturnsReceiverForRlc command-line argument.
Closed issues:
typetools#6434, typetools#6810, typetools#6839, typetools#6842, typetools#6856.
Version 3.48.0 (October 2, 2024)
User-visible changes:
The new SqlQuotesChecker prevents errors in quoting in SQL queries. It prevents
injection attacks that exploit quoting errors.
Aggregate Checkers now interleave error messages so that all errors about a line of code
appear together.
(EISOP note: some signatures changed from BaseTypeChecker to SourceChecker,
which might require adaptation in checkers.)
Closed issues:
typetools#3568, typetools#6725, typetools#6753, typetools#6769, typetools#6770, typetools#6780, typetools#6785, typetools#6795, typetools#6804, typetools#6811, typetools#6825.
Version 3.47.0 (September 3, 2024)
User-visible changes:
The Checker Framework runs under JDK 22 -- that is, it runs on a version 22 JVM.
The Checker Framework runs under JDK 23 -- that is, it runs on a version 23 JVM.
(EISOP note: this has been working for a while already, this just cleaned up
compiler warnings.)
The Optional Checker no longer supports the @OptionalBottom annotation.
Implementation details:
Removed annotations:
@OptionalBottom
Closed issues:
typetools#6510, typetools#6704, typetools#6743, typetools#6749, typetools#6760, typetools#6761.
Version 3.46.0 (August 1, 2024)
User-visible changes:
Renamed @EnsuresCalledMethodsVarArgsto @EnsuresCalledMethodsVarargs.
Implementation details:
Many symbols that contained VarArgs were similarly renamed to use Varargs,
e.g. AnnotatedTypeMirror.isVarargs().
Closed issues:
typetools#4923, typetools#6420, typetools#6469, typetools#6652, typetools#6664.
Version 3.45.0 (July 1, 2024)
Implementation details:
Added a Tree argument to AnnotatedTypes.adaptParameters()
Deprecated methods:
TreeUtils.isVarArgs()=>isVarargsCall()TreeUtils.isVarArgMethodCall()=>isVarargsCall()
Closed issues:
#152, typetools#5575, typetools#6630, typetools#6641, typetools#6648, typetools#6676.
Version 3.44.0 (June 3, 2024)
Implementation details:
Removed methods:
AbstractAnalysis.readFromStore(): useMap.get()
Renamed methods:
CFAbstractStore.methodValues()=>methodCallExpressions()AbstractCFGVisualizer.format()=>escapeString()
Renamed fields:
AnalysisResult.stores=>inputs
Deprecated methods:
AbstractAnalysis.getContainingMethod()=>getEnclosingMethod()AbstractAnalysis.getContainingClass()=>getEnclosingMethod()ControlFlowGraph.getContainingMethod()=>getEnclosingMethod()ControlFlowGraph.getContainingClass()=>getEnclosingClass()JavaExpression.isUnassignableByOtherCode()=>isAssignableByOtherCode()JavaExpression.isUnmodifiableByOtherCode()=>isModifiableByOtherCode()
BaseTypeVisitor#visitMethod(MethodTree, Void) is now final.
Subclasses should override BaseTypeVisitor#processMethodTree(MethodTree).
Closed issues:
#802, typetools#2676, typetools#2780, typetools#2926, typetools#3378, typetools#3612, typetools#3764, typetools#4007, typetools#4964, typetools#5070, typetools#5176,
typetools#5237, typetools#5541, typetools#6046, typetools#6382, typetools#6388, typetools#6566, typetools#6568, typetools#6570, typetools#6576, typetools#6577, typetools#6631,
typetools#6635, typetools#6636, typetools#6644.
Version 3.43.0 (May 1, 2024)
User-visible changes:
Method, constructor, lambda, and method reference type inference has been
greatly improved. The -AconservativeUninferredTypeArguments option is
no longer necessary and has been removed.
Renamed command-line arguments:
-AskipDirshas been renamed to-AskipFiles.
-AskipDirswill continue to work for the time being.
New command-line arguments:
-AonlyFilescomplements-AskipFiles
A specialized inference algorithm for the Resource Leak Checker runs
automatically as part of whole-program inference.
Implementation details:
Deprecated ObjectCreationNode#getConstructor in favor of new
ObjectCreationNode#getTypeToInstantiate().
(EISOP note: this already happened in Version 3.39.0-eisop1 on
October 22, 2023.)
Renamed AbstractCFGVisualizer.visualizeBlockHelper() to
visualizeBlockWithSeparator().
Moved methods from TreeUtils to subclasses of TreeUtilsAfterJava11:
- isConstantCaseLabelTree
- isDefaultCaseLabelTree
- isPatternCaseLabelTree
Renamed BaseTypeVisitor.checkForPolymorphicQualifiers() to
warnInvalidPolymorphicQualifier().
Closed issues:
#979, typetools#4559, typetools#4593, typetools#5058, typetools#5734, typetools#5781, typetools#6071, typetools#6093, typetools#6239, typetools#6297, typetools#6317,
typetools#6322, typetools#6346, typetools#6373, typetools#6376, typetools#6378, typetools#6379, typetools#6380, typetools#6389, typetools#6393, typetools#6396, typetools#6402,
typetools#6406, typetools#6407, typetools#6417, typetools#6421, typetools#6430, typetools#6433, typetools#6438, typetools#6442, typetools#6473, typetools#6480, typetools#6507,
typetools#6531, typetools#6535.