Skip to content

Releases: typetools/checker-framework

Checker Framework 3.46.0

01 Aug 18:47
Compare
Choose a tag to compare

Version 3.46.0 (August 1, 2024)

User-visible changes:

Renamed @EnsuresCalledMethodsVarArgsto @EnsuresCalledMethodsVarargs.

Closed issues:

#4923, #6420, #6469, #6652, #6664.

Checker Framework 3.45.0

01 Jul 20:41
Compare
Choose a tag to compare

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, #5575, #6630, #6641, #6648, #6676.

Checker Framework 3.44.0

04 Jun 01:50
Compare
Choose a tag to compare

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, #2676, #2780, #2926, #3378, #3612, #3764, #4007, #4964, #5070, #5176, #5237, #5541, #6046, #6382, #6388, #6566, #6568, #6570, #6576, #6577, #6631, #6635, #6636, #6644.

Checker Framework 3.43.0

01 May 20:01
Compare
Choose a tag to compare

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().

Renamed AbstractCFGVisualizer.visualizeBlockHelper() to visualizeBlockWithSeparator().

Moved methods from TreeUtils to subclasses of TreeUtilsAfterJava11:

  • isConstantCaseLabelTree
  • isDefaultCaseLabelTree
  • isPatternCaseLabelTree

Renamed BaseTypeVisitor.checkForPolymorphicQualifiers() to warnInvalidPolymorphicQualifier().

Closed issues:

#979, #4559, #4593, #5058, #5734, #5781, #6071, #6093, #6239, #6297, #6317, #6322, #6346, #6373, #6376, #6378, #6379, #6380, #6389, #6393, #6396, #6402, #6406, #6407, #6417, #6421, #6430, #6433, #6438, #6442, #6473, #6480, #6507, #6531, #6535.

Checker Framework 3.42.0

15 Dec 23:37
Compare
Choose a tag to compare

Version 3.42.0 (December 15, 2023)

User-visible changes:

Method annotation @AssertMethod indicates that a method checks a value and possibly throws an assertion. Using it can make flow-sensitive type refinement more effective.

In org.checkerframework.common.util.debug, renamed EmptyProcessor to DoNothingProcessor.
Removed org.checkerframework.common.util.report.DoNothingChecker.
Moved ReportChecker from org.checkerframework.common.util.report to org.checkerframework.common.util.count.report.

Checker Framework 3.41.0

04 Dec 17:52
Compare
Choose a tag to compare

Version 3.41.0 (December 4, 2023)

User-visible changes:

New command-line options:
-AassumePureGetters Unsoundly assume that every getter method is pure

Implementation details:

Added method isDeterministic() to the AnnotationProvider interface.

CFAbstractValue#leastUpperBound and CFAbstractValue#widenUpperBound are now final. Subclasses should override method CFAbstractValue#upperBound(V, TypeMirror, boolean) instead.

Closed issues:

#1497, #3345, #6037, #6204, #6276, #6282, #6290, #6296, #6319, #6327.

Checker Framework 3.40.0

01 Nov 19:10
Compare
Choose a tag to compare

Version 3.40.0 (November 1, 2023)

User-visible changes:

Optional Checker: checker-util.jar defines OptionalUtil.castPresent() for suppressing false positive warnings from the Optional Checker.

Closed issues:

#4947, #6179, #6215, #6218, #6222, #6247, #6259, #6260.

Checker Framework 3.39.0

02 Oct 17:38
Compare
Choose a tag to compare

Version 3.39.0 (October 2, 2023)

User-visible changes:

The Checker Framework runs on a version 21 JVM. It does not yet soundly check all new Java 21 language features, but it does not
crash when compiling them.

Implementation details:

Dataflow supports all the new Java 21 language features.

  • A new node,DeconstructorPatternNode, was added, so any implementation of NodeVisitor must be updated.
  • Method InstanceOfNode.getBindingVariable() is deprecated; use getPatternNode() or getBindingVariables() instead.

WPI uses 1-based indexing for formal parameters and arguments.

Closed issues:

#5911, #5967, #6155, #6173, #6201.

Checker Framework 3.38.0

01 Sep 14:06
Compare
Choose a tag to compare

Version 3.38.0 (September 1, 2023)

User-visible changes:

Eliminated the @SignedPositiveFromUnsigned annotation, which users were advised against using.

Implementation details:

Renamed SourceChecker.processArg()' to processErrorMessageArg()`.

Closed issues:

#2156, #5672, #6110, #6111, #6116, #6125, #6129, #6136.

Checker Framework 3.37.0

01 Aug 17:58
Compare
Choose a tag to compare

Version 3.37.0 (August 1, 2023)

User-visible changes:

Removed support for deprecated option -AuseDefaultsForUncheckedCode.

The Signedness Checker no longer allows (nor needs) @UnknownSignedness to be written on a non-integral type.

Implementation details:

QualifierHierarchy:

  • The constructor takes an AnnotatedTypeFactory.
  • Changes to isSubtype():
    • isSubtype() has been renamed to isSubypeQualifiers() and made protected. Clients that are not in a qualifier hierarchy should call isSubtypeShallow() or, rarely, new method isSubtypeQualifiersOnly().
    • New public method isSubtypeShallow()' that takes two more arguments than isSubypeQualifiers()`.
  • Similar changes to greatestLowerBound() and leastUpperBound().

Closed issues:

#6076, #6077, #6078, #6098, #6100, #6104, #6113.