Repository navigation
Fix parser and language compatibility gaps - #1883
Merged
Merged
Conversation
This was referenced Oct 26, 2026
Report malformed Object::Pad BUILD declarations during parsing and preserve multiline regex searches constrained by positive lookaheads. Add regression coverage for those cases and executable nested-hash format arguments. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Add scoped parser keyword providers for named fun and explicit-invocant method declarations, backed by the existing signature implementation. Carry provider registrations through lexical blocks and eval sites on both backends. Add coverage for defaults, slurpy arguments, methods, nested eval, and lexical removal. Record the initial supported subset and remaining work. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <223556219+codex[bot]@users.noreply.github.com>
Refresh active lexical cells after assignments in code that declares a FORMAT, so deferred format arguments observe the current scalar value. Add a regression test covering reassignment before write(). Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Preserve the in-progress fixes and regression tests before further changes. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <2238690+openai-codex[bot]@users.noreply.github.com>
Compile format argument expressions for write-time execution, retain literal-only picture lines, and recognize anonymous Function::Parameters fun expressions. Document the implemented subset and the remaining core format lexical edge case. Generated with OpenAI Codex (https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Compile format argument expressions in a child lexical scope so a my/state binding is shared by later expressions on its line without leaking into or being captured by the surrounding format declaration. Strengthen BUILD diagnostic coverage and extend Function::Parameters signature tests. Generated with OpenAI Codex (https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Provide the default $self invocant for Function::Parameters method signatures while preserving explicit invocants, including empty signatures. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Preserve positional, named, invocant, and slurpy parameter metadata on runtime code objects and expose it through Function::Parameters::info. Document the lexical parser keyword-plugin API and add focused API coverage. Generated with [OpenAI Codex](https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Support selective fun/method imports, anonymous methods, upstream-compatible signature info layout, and scalar type constraint checks. Document the current GraphQL implicit-keyword compatibility gap and cover the supported behavior on both execution backends. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Model GraphQL::MaybeTypeCheck's delegated keyword import, parse Type::Tiny signature expressions and post-signature attributes, and remove bound method invocants from @_ after signature binding so forwarding preserves call arity. Add backend-parity coverage for delegated imports, typed parameters, and goto forwarding. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Record post-fix GraphQL test coverage and the two remaining websocket message ordering mismatches pending comparison with system Perl. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Record that native Function::Parameters passes the GraphQL WebSocket tests while PerlOnJava reproduces timing-dependent message-order differences. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Parse hash-configured function aliases, class methods, and methods with multiple configured or explicit invocants. Preserve keyword and invocant metadata through both runtime backends and add upstream-validated coverage. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Honor Function::Parameters invocant and strict configuration for aliases, including optional explicit invocants and lax argument handling. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Read check_argument_types from configured keyword definitions and apply constraint coercions before checking typed parameters. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Turn simple quoted type names in signatures into type-function calls before parameter validation so coercion and checks match Function::Parameters. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Add eager Function::Parameters signature metadata, configured attributes and strict argument diagnostics, and complete prototype validation behavior. Add focused regression coverage and update the compatibility design and changelog. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Include join in core ambiguity handling and report conflicts with fully implemented package subs. Cover the Function::Parameters collision and record that the upstream attributes suite now passes. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Implement runtime-installed Function::Parameters functions and methods with stable declared names. Keep method dispatch synchronized across whole-glob aliases when the canonical sub is redefined, with JVM and interpreter coverage. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Support configured install_sub callbacks, runtime installation, and standard method modifier keyword registrations. Add shared-backend regression coverage and preserve the expected diagnostic for unnamed modifiers. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Carry simple named type constraints through signature metadata and resolve Function::Parameters::Param->type during introspection. Add a regression that checks the Type::Tiny object before the function has run. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Recognize custom and multiple invocants, reject duplicate or invalid invocants with focused diagnostics, and report Function::Parameters method argument counts in the keyword-specific format. Preserve named-parameter colons while scanning invocant separators. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Honor :strict and :lax imports, validate configured name policies and argument defaults, and report invalid direct imports. Add regression coverage for required and prohibited names, disabled defaults, and import diagnostics. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Treat the method keyword as method defaults when its configuration omits an explicit defaults option. Cover the configured invocant behavior and retain TODO coverage for the separate same-named outer lexical default gap. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Bind named parameters from the argument tail after positional parameters, handle omitted positional defaults, validate required names with slurpy arrays, and align diagnostics for malformed and incomplete named calls. Add regression coverage and record current upstream compatibility status. Generated with Codex (https://openai.com/codex/) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Support callback and Moose type reification, retain type objects and names for anonymous code objects, and report malformed declaration diagnostics with the expected source context. Add 107 assertions covering the metadata, strictness, and malformed type behavior. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Keep malformed underscore prototype diagnostics complete and emit the paired warning without misclassifying escaped prototype classes. Validate unknown named parameters before reporting missing required keys, and preserve native @ slurpy handling for odd positional tails. Add focused project tests for both regression groups. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Function::Parameters::info must compile a deferred named subroutine before checking its signature metadata. This keeps introspection reliable before a function's first invocation on all supported platforms. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
fglock
force-pushed
the
fix/parser-language-compatibility-issues
branch
from
October 26, 2026 11:55
be49aee to
485de8d
Compare
When a named code reference lacks signature metadata, inspect its current package CV before treating it as an ordinary subroutine. This handles stale or deferred CV references while preserving undef for non-Function::Parameters subroutines. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
The Function::Parameters metadata test needs a Type::Tiny-shaped object, but Types::Standard is not installed on clean CI runners. Provide the minimal test fixture locally so the tracked regression runs consistently without host CPAN modules. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
fglock
marked this pull request as ready for review
October 26, 2026 14:23
This was referenced Oct 26, 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.
Summary
BUILDdeclarations (Report malformed Object::Pad BUILD declarations clearly #1808).fun/method, configured aliases and invocants, strict/lax arity, type checks and coercions, callback and Moose type reification, attributes, method@_forwarding, signature introspection, and clear parser diagnostics (Design a parser keyword-plugin API for PerlOnJava #1292, Implement Function::Parameters compatibility using native signatures and parser support #1361).Validation
nice -n 19 timeout 3600 make: passed at commit2962c4465in 20m 55s.make check-links: 567 links passed.function_parameters_metadata_and_strict.t: all 107 assertions pass under system Perl, JVM, and interpreter.prototype_underscore_warning_diagnostics.tandsignature_named_validation_regressions.t. The named-signature test passes all 4 assertions on JVM and interpreter; the prototype diagnostic oracle passes under system Perl, and the focused PerlOnJava gate passes.comp/proto.t216/216 andop/signatures.t1222/1222. Comparingmastershowed both passed there, while the PR parent reproduced 213/216 and 1220/1222. The fixes preserve complete malformed-underscore warnings, report unknown named keys before missing required keys, and allow native@slurpy signatures to accept an odd positional tail.types_custom_2.t(4),types_caller.t(20),types_inline.t(14), andtypes_moose.t,_2,_3(49 each);gorn.t(4),precedence.t(11), andtypes_parse.t(2) also pass.elsewhere.tandlineno-torture.t, a warning-category difference instringy_h.t, and incomplete upstream files. The design document records this classification and the exact incomplete cases.op/write.t: 636/636 assertions passed. Text::YAWikiFormater 0.51: all seven test programs passed on PerlOnJava and system Perl;format.tandurls.twere explicitly rechecked on the current build.Remaining work
This remains a draft while the remaining upstream compatibility gaps and GraphQL WebSocket timing difference are investigated. Issues #1808, #1596, #1361, and #1234 remain open on GitHub pending review and merge.