Skip to content

Releases: eisop/checker-framework

Checker Framework 3.28.0-eisop1

08 Dec 01:17
Compare
Choose a tag to compare

Version 3.28.0-eisop1 (December 7, 2022)

User-visible changes:

Support JSpecify annotations in the org.jspecify.annotations package.

Implementation details:

Remove duplicate code in AnnotatedTypeFactory and javacutil.

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:

typetools#5390, typetools#5399, typetools#5390.

Checker Framework 3.27.0-eisop1

06 Nov 16:53
Compare
Choose a tag to compare

Version 3.27.0-eisop1 (November 6, 2022)

User-visible changes:

The new command-line argument -AwarnRedundantAnnotations warns about redundant annotations.
With this flag, a warning is issued if an explicitly written annotation on a type is the same
as the default annotation for this type and location.

Support additional Nullness Checker annotation aliases from:

  • io.micronaut.core.annotation
  • io.vertx.codegen.annotations
  • jakarta.annotation
  • net.bytebuddy[.agent].utility.nullability

Implementation details:

When reporting issues on an artificial tree (generated by the compiler), always
try to find the closest non-artificial parent in the AST path to provide position
information.

Formatting rules for *.ajava files are now consistent with the ones for *.java files.
Imports are now ignored when parsing ajava files.

Moved method isAutoGeneratedRecordMember(Element e), which was added in 3.27.0,
from TreeUtils to the more appropriate ElementUtils.

Refined the return types of several TreeUtils elementFromDeclaration methods
to be @NonNull.

Closed issues:

#244, #360.

Version 3.27.0 (November 1, 2022)

User-visible changes:

The Constant Value Checker supports new annotation @DoesNotMatchRegex.

Closed issues:

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

Checker Framework 3.26.0-eisop1

13 Oct 23:11
Compare
Choose a tag to compare

Version 3.26.0-eisop1 (October 13, 2022)

Implementation details:

Documentation improvements and various code fixes.

Closed issues:

#333, #348.

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:

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

Checker Framework 3.25.0-eisop1

03 Sep 21:56
Compare
Choose a tag to compare

Version 3.25.0-eisop1 (September 3, 2022)

User-visible changes:

The new command-line argument -AconservativeArgumentNullnessAfterInvocation improves
the soundness of the Nullness Checker. In previous versions and without supplying the
new flag, the receiver and arguments that are passed to non-null parameters in a method call
or constructor invocation are assumed to be non-null after the invocation.
This assumption is unsound in general, but holds for most code.
Use the new flag to soundly handle the nullness of the receiver and arguments in an invocation.
In a future version, we might change the default for this option.

Support the JSpecify NonNull annotation as an alias in the Nullness Checker.

Fixed ordering of command-line and JDK stubs.

Closed issues:

#300, #321.

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:

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

Checker Framework 3.24.0-eisop1

05 Aug 18:24
Compare
Choose a tag to compare

Version 3.24.0-eisop1 (August 5, 2022)

User-visible changes:

Postconditions on the parameters of a constructor are now used at new object creations.

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:

typetools#5200, typetools#5216.

Checker Framework 3.23.0-eisop2

22 Jul 23:47
Compare
Choose a tag to compare

Version 3.23.0-eisop2 (July 22, 2022)

Implementation details:

Improved defaulting in stub files:
As an extension to the fix for #270, we now allow internally parsing
multiple stub files at the same time. This should make AnnotatedTypeFactory.getDeclAnnotations
return the expected declaration annotations for all kinds of elements,
even if it is parsing a different stub file.

Closed issues:

#308.

Checker Framework 3.23.0-eisop1

15 Jul 00:13
Compare
Choose a tag to compare

Version 3.23.0-eisop1 (July 14, 2022)

Implementation details:

Added support for viewpoint adaptation of types via the added
ViewpointAdapter interface. This support is experimental and the API
will change, in particular if the feature is fully integrated with
the DependentTypesHelper.

Improved defaulting in stub files:
Method AnnotatedTypeFactory.getDeclAnnotations now returns the
annotations for a package element. Previously, it returned an empty set
when parsing another file. (#270)

Method CFAbstractTransfer.visitMethodInvocation now only creates a
ConditionalTransferResult when the method return type is boolean or
Boolean. This avoids unnecessary duplication of many stores, reducing
memory consumption.

Improved the CFG type of implicit this receivers. (typetools#5174)

Closed issues:

#270, #281, typetools#5174, typetools#5189.

Checker Framework 3.22.1-eisop1

03 Jun 16:57
Compare
Choose a tag to compare

Version 3.22.1-eisop1 (June 3, 2022)

User-visible changes:

Type parameters with explicit j.l.Object upper bounds and
unannotated, unbounded wildcards now behave the same in .astub
files and in .java files.

Implementation details:

In PropagationTreeAnnotator.visitBinary, we now consider the two cases where
the resulting Java type of a binary operation can be different from the operands'
types: string concatenation and binary comparison. We apply the declaration
bounds of the resulting Java type to ensure annotations in the ATM are valid.

Deprecated AnnotatedTypeFactory.binaryTreeArgTypes(AnnotatedTypeMirror, AnnotatedTypeMirror) in favor of
AnnotatedTypeFactory.binaryTreeArgTypes(BinaryTree) and
AnnotatedTypeFactory.compoundAssignmentTreeArgTypes(CompoundAssignmentTree).

Closed issues:

typetools#3025, typetools#3030, typetools#3236.

Test cases for issues that already pass:
typetools#2722, typetools#2995, typetools#3015, typetools#3027.

typetools#58 was closed in error. See
#242
for follow-up discussions.

Checker Framework 3.22.0-eisop1

06 May 23:42
Compare
Choose a tag to compare

Version 3.22.0-eisop1 (May 6, 2022)

User-visible changes:

Added reaching definitions and very busy expressions analysis demos.

Implementation details:

Fixed the types of MethodInvocationNode#arguments and
ObjectCreationNode#arguments in CFGs. Previously, argument nodes are created
using the types from the method declaration, which means some nodes are using
type variables that are not substituted by type arguments at the call site.
For example, we used to observe new T[]{"a", "b"} instead of
new String[]{"a", "b"}, while the second one makes more sense.

Added a new gradle task fastAssemble to quickly rebuild the Checker
Framework for local development. This command will assemble the jar
files without generating any Javadoc or sources.jar files, thus it is
faster than the gradle assemble task.

Type system test drivers no longer need to pass -Anomsgtext.
The Checker Framework test driver (in TypecheckExecutor.compile) now always
passes the -Anomsgtext option.

Moved the -AajavaChecks option from CheckerFrameworkPerDirectoryTest to
TypecheckExecutor.compile to ensure the option is used for all tests.

Closed issues:
#210.

Checker Framework 3.21.4-eisop1

04 Apr 21:22
Compare
Choose a tag to compare

Version 3.21.4-eisop1 (April 4, 2022)

Closed issues:
#199, #204.