fix: parse dense Mo::Inline double-colon barewords - #1285
Merged
Conversation
Treat `::` as a bareword string when it appears before concatenation, allowing dense Mo::Inline-generated hash dereferences such as TestML::Base to compile on both execution backends. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <noreply@openai.com>
Snapshot the user-supplied Perl core library and test-suite synchronization before continuing issue #1217 investigation. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <noreply@openai.com>
Owner
Author
UAT follow-upThe synced Perl core tests reproduce the reported results:
The synchronized bundled Perl library updates have also been added in commit |
Implement Perl's equ, neu, ===, and !== operators across the parser, JVM backend, bytecode backend, chaining logic, and overload dispatch. Add focused regression coverage for defined and undefined operands. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Owner
Author
|
Follow-up validation and fix for the synced UAT regressions:
The changes are in commit |
Compile nested comparison ASTs as left-to-right short-circuit chains in the bytecode backend, matching JVM behavior and evaluating each operand once. Extend the defined-comparison regression test with mixed chains and a short-circuit side-effect check. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Owner
Author
|
Additional fix for the remaining interpreter parity gap:
Latest commit: |
Fetch tied operands once before equ, neu, ===, and !== check definedness and perform the comparison on the fetched values. This preserves Perl's fetch count semantics for the new operators. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <158243242+openai-codex[bot]@users.noreply.github.com>
Owner
Author
|
Fixed the latest UAT regression in commit The new defined-comparison operators were checking tied operands for definedness and then comparing the original tied wrapper, causing a second FETCH. They now FETCH once and compare the fetched value. Validation:
|
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
Fixes #1217.
TestML::Base 0.54 uses dense Mo::Inline-generated code containing
::as abareword between concatenation operators inside a braced hash dereference.
The parser treated this as an invalid leading package-qualified name and
reported a missing closing brace. Parse
::as the bareword string in thiscontext.
Validation
makegate after rebase: passed