Repository navigation
fix(wasm): scoped arm binders and typed tuple patterns; record the Actions allow-list - #428
Conversation
A reviewed copy of the repository setting (Settings > Actions > General). It has only what the workflows here and the pinned standards workflows use, plus two entries kept by owner decision. GitHub does not read the file; the owner changes the setting by hand. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZmKrYLDC4WHi2yt11u
…ndings - The binder of a `case` arm and the names a `match` arm binds are now in scope in that arm only (`let` already did this). A binder stayed bound after the `case`, so `let x = 5`, then a match with `Yes(x)`, then `r + x` read the binder: 14, not 12. With a binder of another wasm type the module was invalid. Older than this pull request. - A tuple pattern reads the 8-byte slots of the tuple, each at its own type. It followed pair pointers, which a tuple does not have. A tuple pattern inside a constructor pattern has no types to use and is refused. - `compile_module_with_main` returns an unsupported-construct error from the typed validation of the module; it took the fallback. - `qualify_functions` is three functions (SonarCloud cognitive complexity). No change in behaviour. - TEST-NEEDS.adoc has one test count (600) in its three places. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZmKrYLDC4WHi2yt11u
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 28 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
|
Codex Review Summary: ❌ FailedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
This security review couldn’t start because the paying account has exhausted its Codex allowance and has insufficient available credits. The payer can check their balance and add credits in the Codex usage dashboard, then try again. If you do not manage the paying account, contact this repository's admins. |



Summary
Follow-up to #426. That pull request merged while the fixes for its last 6 review threads were in work. This pull request has those fixes, and a reviewed copy of the Actions allow-list.
Code generation (
src/ephapax-wasm)Arm binders have a scope. The binder of a
casearm, and the names that amatcharm binds, are now in scope in that arm only.letalready did this. Before, a binder stayed bound after thecase:ephapax runprinted 14 andrun --interpprinted 12. With a binder of another wasm type (Yes(I64)), the module was invalid. This defect is older than feat: one front end (E3), wasm runner (E4) and typed code generation (E5) #426.Tuple patterns. A tuple pattern reads the 8-byte slots of the tuple, each at its own type. It followed pair pointers, which a tuple of three or more does not have. A tuple pattern inside a constructor pattern has no types to use, so the typed validation refuses it.
compile_module_with_main. An unsupported-construct error from the typed validation of the module is returned. Before, the function took the fallback and compiled only the main body.Driver
qualify_functionsis now three functions (SonarCloud cognitive complexity 32, limit 30). No change in behaviour.Documents
TEST-NEEDS.adochas one test count (600) in its three places..github/actions-allowlist.txtis a reviewed copy of the Actions allow-list of this repository (Settings, Actions, General). It has what the workflows here and the pinned standards workflows use, plus two entries that the owner keeps. GitHub does not read the file.Review threads of #426 that this closes
casearmmatcharmcompile_module_with_mainqualify_functionsTEST-NEEDS.adocTests
tests/run_wasm.rs:an_arm_binder_does_not_replace_an_outer_variable(I32 and I64 binder,runandrun --interp).tests/wasm_e2e.rs:e2e_tuple_pattern_reads_the_tuple_slotsande2e_match_arm_binder_ends_with_its_arm. Each builds a core module, runs it, and checks the result ofmain.ephapax-wasmunit tests:pattern_lowering_coverage;module_with_main_fallback_checks_the_bodyhas the new error case.Validation (local, same tree as the head)
cargo test --workspace: 603 passed, 0 failed.cargo fmt --all --check: clean.cargo clippy --workspace --all-targets: no warnings.scripts/status-gate.sh: test count 600 matches.scripts/probe-battery.sh: 53 SAME, 5 SKIP (no wasmtime CLI).formal/is changed.Notes for the owner
main, because the Actions policy refused the reusable workflows ofmetadatastician/standards. The Rust tests therefore did not run in CI for feat: one front end (E3), wasm runner (E4) and typed code generation (E5) #426. If the allow-list is now saved, this pull request is the first one where they can run.Generated by Claude Code