Skip to content

typetools/checker-framework 3.51.1 release - #2192

Merged
wmdietl merged 8 commits into
masterfrom
typetools-3.51.1-fixes
Oct 1, 2026
Merged

wmdietl merged 8 commits into
masterfrom
typetools-3.51.1-fixes

Conversation

@wmdietl

@wmdietl wmdietl commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Brings the typetools Checker Framework 3.51.1 release into master. The import itself was reviewed and merged in #2191 (and the earlier pulls in #2186, #2189 and #2190), following the "Updating from a different fork" steps in docs/developer/README-eisop.md. Please merge this pull request with a merge commit, with the subject typetools/checker-framework 3.51.1 release (#N) and an empty body, so that the typetools commits keep their authorship.

Beyond the import, this pull request has commits that adapt the release to EISOP:

  • Annotation File Utilities on the web page: the web page keeps typetools' text, because the AFU sources are part of this repository now (an earlier commit that restored the links to the old eisop/annotation-tools location is reverted in this pull request). Updating the release process for the AFU is separate work.
  • mvn-examples.zip: restores the top-level maven-examples-<version>/ directory that the Ant target created; this resolves the open review comment on typetools/checker-framework 3.50.0 release #2188. It also fixes zipMavenExamples, which failed under the Gradle configuration cache ("references a Gradle script object from a Groovy closure at execution time") because file(it) ran in a closure; I found this while testing the zip.
  • clone-related.sh: restores timeout 300 on the Gradle downloads, which upstream's CircleCI rewrite removed for all other systems (Copilot, typetools/checker-framework 3.51.1 release #2191).
  • @RequiresNonEmpty: RequiresNonEmpty.List lacked @PreconditionAnnotation, so two @RequiresNonEmpty annotations on one method enforced no precondition (Copilot, typetools/checker-framework 3.51.1 release #2191). RequiresNonNull and the 14 other repeatable contract annotations already had it on their container. The new RepeatedRequiresNonEmpty test fails without the fix. The paired eisop/jdk branch typetools-3.51.1-fixes has the same one-line change; the qualifier copies must stay identical.
  • -AenableWpiForRlc in the manual: hidden (NO-AFU) because the option is disabled here until the AFU is part of the build (Integrate the Annotation File Utilities into our build and port eisop/annotation-tools changes #2187).
  • README typo in checker/tests/ainfer-testchecker/non-annotated.

Not changed: Copilot's two comments on the .m4 prerequisites of the Azure and CircleCI Makefiles, which concern typetools' CI generators that EISOP does not use. Our releaseVersion is unchanged; the three typetools release-version commits were imported as empty commits.

Tested: NonEmptyTest (also confirmed to fail without the fix), zipMavenExamples with and without -PcfWebsite (the archive contains maven-examples-<version>/), tasks --all, spotlessCheck, and the requireJavadoc and javadocDoclintAll findings on changed lines (none). CI covers the rest.

🤖 Generated with Claude Code

wmdietl and others added 7 commits October 1, 2026 15:07
Co-authored-by: Michael Ernst <[email protected]>
Co-authored-by: Suzanne Millstein <[email protected]>
Co-authored-by: Manu Sridharan <[email protected]>
The import of typetools 3.50.0 replaced the download and source-code
links of the Annotation File Utilities with typetools' statement that
they are distributed with the Checker Framework, which is not true for
EISOP.  Restore the entries from before the import, with the version
and date markers that the release scripts stamp.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… task

The zip task replacing the Ant target wrote pom.xml, README and src at
the archive root, whereas the Ant target put them in
maven-examples-<version>/.  Restore the directory.

Also fix zipMavenExamples under the Gradle configuration cache: it
failed with "Invocation of 'file' references a Gradle script object from
a Groovy closure at execution time".  Make the web site directory a
Provider<Directory> instead of resolving it with file(it) in a closure.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
The rewrite for CircleCI dropped the five-minute timeout from the Gradle
dependency downloads for all CI systems and local runs, so a stalled
download could hang a job instead of reaching the retry.  Restore the
timeout in the branch for other systems; CircleCI keeps skipping it.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
The option is not in the supported options of ResourceLeakChecker and its
implementation is under NO-AFU, so the manual must not tell users to pass
it.  Mark the item NO-AFU, like the code.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
RequiresNonEmpty.List, the container of the repeatable annotation, lacked
@PreconditionAnnotation.  Contract processing only unwraps a container that
carries it, so two @RequiresNonEmpty annotations on one method silently
enforced no precondition.  All other repeatable contract annotations
(RequiresNonNull, RequiresCalledMethods, ...) have the meta-annotation on
their container.

Add RepeatedRequiresNonEmpty, modeled on RepeatedRequiresNonNull; without the
fix its three expected contracts.precondition.not.satisfied errors are
missing.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Copilot AI balanced review requested due to automatic review settings October 1, 2026 19:28

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

…b page"

The Annotation File Utilities sources are part of this repository now, so
the web page should not point to the old eisop/annotation-tools location.
Typetools' statement that they are distributed with the Checker Framework
is accurate again.  Updating the release process for the AFU is separate
work.

This reverts commit 732efe6.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@wmdietl
wmdietl merged commit 60fc44b into master Oct 1, 2026
46 checks passed
@wmdietl
wmdietl deleted the typetools-3.51.1-fixes branch October 1, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants