Repository navigation
typetools/checker-framework 3.50.0 release - #2186
Merged
Merged
Conversation
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Co-authored-by: Michael Ernst <[email protected]>
Co-authored-by: Abhijit Kulkarni <[email protected]> Co-authored-by: Suzanne Millstein <[email protected]>
Co-authored-by: Michael Ernst <[email protected]>
…n-file-utilities/lib Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
…s' build changes are ported next Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
…erge Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
…older Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The dataflow manual rename breaks EISOP release packaging, and several updated API comments are factually incorrect.
Review effort: Balanced
Findings: 1
Open (8)
Release pipeline still references old dataflow manual filename · New Fix grammatical error in concurrent semantics wording · New Correct mustBeExact behavior documentation · New Fix ungrammatical return types sentence · New Document preOrPost as an enum, not a boolean · New Clarify which boolean return value the postcondition covers · New Correct inverted description of applicability return value · New Clarify and fix grammar for member consideration flag · New
What changed in this PR
Syncs Checker Framework 3.50.0 into EISOP while retaining fork-specific release and build behavior.
Changes:
- Imports upstream parser, framework, checker, dataflow, and documentation updates.
- Vendors AFU sources and tests without enabling its Gradle project.
- Updates build scripts, CI configuration, Docker definitions, and test assets.
| File | Description |
|---|---|
annotation-file-utilities/** |
Adds vendored AFU implementation, documentation, and tests. |
javacutil/** |
Adds javac-based parsing support and documentation updates. |
framework/src/** |
Integrates parser/API changes and upstream documentation cleanup. |
framework/tests/** |
Updates parser, flow, value, and test documentation cases. |
framework-test/** |
Updates test harness documentation and formatting. |
dataflow/src/** |
Updates dataflow expressions, CFG APIs, and analysis documentation. |
dataflow/manual/** |
Renames and updates the dataflow manual. |
checker/src/** |
Ports checker behavior and parser package changes. |
checker/tests/** |
Updates checker regression inputs and expected diagnostics. |
checker/jtreg/** |
Updates jtreg inputs for formatting and parser behavior. |
checker/bin-devel/** |
Updates Docker generation, scripts, and compatibility expectations. |
checker-util/** |
Adds checker-util distribution copying and documentation cleanup. |
checker-qual/** |
Updates public qualifier Javadocs. |
docs/** |
Imports upstream manual and contributor updates. |
buildSrc/** |
Updates AFU executable paths and formatting. |
.azure/**, .travis.yml |
Updates scheduled and legacy CI configuration. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
… typetools' release and CI additions Remove the doLast copy in checker-util/build.gradle: assembleForJavac already copies checker-util.jar into checker/dist, and the closure fails with the Gradle configuration cache. Do not adopt typetools' release.gradle, which belongs to its own release process, or the added checkNullness -PnullnessAll step of typecheck-part2. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
AFU is not a Gradle subproject here, so the root project's Spotless java format now targets annotation-file-utilities/src. The tests/ directory is not formatted: its .goal files are the expected output of annotating the inputs, which depends on the exact formatting of the inputs. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
…er note in the typetools 3.50.0 changelog entry Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
The typetools release renamed the dataflow manual to checker-framework-dataflow-manual; the release.xml targets still looked for dataflow.pdf, so a release build would have omitted the manual. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
Its stricter lint rules report 330 findings in the release scripts and require reformatting them and two skill scripts, which makes make style-check fail. Keep ruff's default configuration, as before the merge; adopting the stricter rules goes together with updating the release scripts. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01GW8C4XvQcY7RQkVAqStDB6
This was referenced Oct 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Brings the typetools Checker Framework 3.50.0 release (the changes since 3.49.5) into EISOP, following the "Updating from a different fork" steps in
docs/developer/README-eisop.md. Merging this PR intotypetools-3.50.0-fixesis the first step; the second is a PR fromtypetools-3.50.0-fixesintomaster, to be merged without squashing.Please squash-merge this PR with the title
typetools/checker-framework 3.50.0 releaseand the co-author lines below, so that all authors are kept:Companion pull requests
CI clones the companion repositories by branch name, and all three use
typetools-3.50.0-merge. Merge them in this order, before this pull request:guava/pom.xmlopens thefileandparsercompiler packages that the new expression parser needs (squash is fine).IndexListIndexingTest. Merge it with a merge commit, not a squash, so that the authorship of the two typetools commits is retained.Once they are merged and their branches are deleted, CI here uses their
masterbranches, which then contain these changes.How it was made
The 95 upstream commits were cherry-picked onto a branch whose first commit switches the tree to the typetools formatting (a final commit switches back to AOSP), so that the picks apply cleanly. References to upstream issues and pull requests were removed from the commit messages.
Handled differently from a plain cherry-pick
javacjar removed. The release addsannotation-file-utilities/lib/javac-9+181-r4173-1.jar, which is not wanted; it is deleted in this branch and nojavac*.jaris tracked.annotation-file-utilities/as it is upstream and was not reviewed in detail. It is not wired into the Gradle build:settings.gradlekeeps EISOP'sNO-AFUblock.JavaExpressionParseUtilwere ported to the newExpressionTreeToJavaExpressionVisitorwhere the new design has an equivalent (sameNamecomparisons, a@SuppressWarnings). The build now exportsjdk.compiler/com.sun.tools.javac.parser. One behavior difference:isFlowParseError()now uses upstream'sstartsWithinstead ofendsWith.docs/developer/release/, the Gradle wrapper and all dependency and plugin versions where EISOP is equal or newer, the rootMakefile(upstream'smypy --strictstep is not adopted), and EISOP's JavaDoc/comment wording where both sides edited the same text.-Xep:DoNotCallSuggester:OFF, the new-PnullnessAllproperty, the dataflow JUnit test (the dataflowtesttask is re-enabled; we keep itsdependsOn('allDataflowTests')),.gitignoreand manual-Makefile updates.checkCompilerMessageschange.getPrimaryAnnotationInHierarchy->getAnnotationInHierarchy,hasPrimaryAnnotation->hasAnnotation, and a redundantassertremoved inValueLiteral.The typetools changelog section is inserted below our
3.49.5-eisop2entry and above3.49.5-eisop1, so that our changes stay on top; there is also a note about the new parser in our own entry.Testing
On JDK 21:
compileJava,compileTestJava,assembleForJavac,:framework:test(384 tests), and:checker:testfor the Nullness, Lock, Index, ResourceLeak and Initialization tests, plus:dataflow:test, all pass. jtregsortwarnings,nullness/storeInBytecodeandnullness/annotatedForScopepass. The full suite has not been run locally; CI will cover it.🤖 Generated with Claude Code