Skip to content

Checker Framework 3.49.1-eisop1

Choose a tag to compare

@wmdietl wmdietl released this 18 Mar 01:41
· 250 commits to master since this release

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:

#1003, #1022, #1033, #1058.

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:

typetools#6886.

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(): use Map.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:

  • -AskipDirs has been renamed to -AskipFiles.
    -AskipDirs will continue to work for the time being.

New command-line arguments:

  • -AonlyFiles complements -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.