Skip to content

Releases: typetools/checker-framework

Checker Framework 3.32.0

02 Mar 22:27
Compare
Choose a tag to compare

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

17 Feb 21:17
Compare
Choose a tag to compare

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

02 Feb 21:20
Compare
Choose a tag to compare

Version 3.30.0 (February 2, 2023)

Implementation details:

getQualifierKind() throws an exception rather than returning null.

Renamed gradle task copyJarsToDist to assembleForJavac.

Closed issues:
#5402, #5486, #5489, #5519, #5524, #5526.

Checker Framework 3.29.0

05 Jan 19:10
Compare
Choose a tag to compare

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

01 Dec 20:30
Compare
Choose a tag to compare

Version 3.28.0 (December 1, 2022)

User-visible changes:

The Checker Framework runs under JDK 19 -- that is, it runs on a version 19 JVM.

Implementation details:

Renamed TryFinallyScopeCell to LabelCell.

Renamed TreeUtils.isEnumSuper to isEnumSuperCall.

Closed issues:

#5390, #5399, #5390.

Checker Framework 3.27.0

01 Nov 19:41
Compare
Choose a tag to compare

Version 3.27.0 (November 1, 2022)

User-visible changes:

The Constant Value Checker supports new annotation @DoesNotMatchRegex.

Closed issues:

#5238, #5360, #5362, #5387.

Checker Framework 3.26.0

03 Oct 21:39
Compare
Choose a tag to compare

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:

#5081, #5159, #5245, #5302, #5319, #5323.

Checker Framework 3.25.0

02 Sep 07:53
Compare
Choose a tag to compare

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:

#5216, #5240, #5256, #5273.

Checker Framework 3.24.0

03 Aug 19:22
Compare
Choose a tag to compare

Version 3.24.0 (August 3, 2022)

User-visible changes:

Performance improvements.

Minor bug fixes and enhancements.

Implementation details:

Prefer SystemUtil.jreVersion to SystemUtil.getJreVersion().

Closed issues:

#5200, #5216.

Checker Framework 3.23.0

11 Jul 23:44
Compare
Choose a tag to compare

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:

#4855, #5151, #5166, #5172, #5175, #5181, #5189.