Repository navigation
fix: expose every Java module service provider field - #56
Merged
Merged
Conversation
Co-authored-by: WillBooster (Codex) <agent@willbooster.com>
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.
Why
A
provides Service with First, Seconddirective exposesSecondthrough itsproviderfield but leavesFirstunlabelled. Field queries therefore miss the only implementation in a single-provider directive and the first implementation in longer lists.Requirements
providerfield for every implementation because callers should find the complete provider list through one field query.Customer Summary
Field access and structural queries return every service implementation in a Java module directive, including the first or only provider.
Technical Summary
provides_module_directiveassignsproviderto its first implementation as well as subsequent implementations. Generated parser metadata makes the field required. The public WASM API regression checks the service field, ordered provider fields, query captures, and source ranges for one, two, and three implementations.Testing
bun run build/ci,bun run verify, andbun wb test test/unit/moduleProviders.test.ts test/unit/corpus.test.ts test/unit/wasm.test.tspass. The new regression fails on the unchanged parser and passes with the fix. Both native and WASM execution pass all 165 corpus cases. The complete module compiles cleanly with JDK 27. All PR CI checks pass, including the full suite, native platform checks, Rust, and fuzzing. Five review sessions completed successfully with no findings; the pushed revision was reviewed by at least one successful exploration session, with full coverage unverified.