Skip to content

fix(syntax): Carp's comma is whitespace, not unquote, in the cross-dialect pin - #108

Merged
takeokunn merged 1 commit into
mainfrom
fix/carp-comma-is-whitespace
Aug 3, 2026
Merged

fix(syntax): Carp's comma is whitespace, not unquote, in the cross-dialect pin#108
takeokunn merged 1 commit into
mainfrom
fix/carp-comma-is-whitespace

Conversation

@takeokunn

Copy link
Copy Markdown
Collaborator

main is currently brokencargo test --workspace fails on sexpr::tests::parser::hy_comma_arm_does_not_change_other_dialects. cargo test --test cli still passes, which is why it wasn't caught earlier.

A semantic conflict between two PRs that were each green alone

Neither PR could have caught it. git saw no textual conflict, both CI runs were green, and the collision only exists once both are on the same tree. This is the pattern where main breaks from concurrent PRs despite each passing independently.

The fix

Carp moves from the unquote loop into the whitespace loop beside Clojure. The test's doc comment previously said the split-out arm "still serves Unknown and Carp"#104 made that false, so it now records what actually happened and why Carp left the list.

Verification

cargo build --workspace, cargo test --workspace, cargo test --test cli (3085 passed), cargo fmt --all --check, cargo clippy --all-targets --all-features -- -D warnings — all exit 0.

…alect pin

`main` was broken by a semantic conflict between two PRs that were each
green alone and merged cleanly.

#106 added `hy_comma_arm_does_not_change_other_dialects`, asserting `,`
still yields `ReaderPrefix::Unquote` in every dialect but Clojure --
including Carp, which at the time inherited the legacy reader where that
was true. #104 then split Carp out and made `,` **whitespace**, which is
what Carp actually does: `[min, max, val]` and `[x Int, y Int]` are
separator syntax, and reading the commas as unquote gave `max` and `val`
phantom prefixes at 39 corpus sites.

Neither PR could have caught this. git saw no textual conflict, both
CI runs were green, and the collision only exists once both are on the
same tree.

Carp moves from the unquote loop into the whitespace loop beside
Clojure, and the test's doc comment now records why -- it previously
said the split-out arm "still serves `Unknown` and `Carp`", which #104
made false.
@takeokunn
takeokunn merged commit c553983 into main Aug 3, 2026
10 checks passed
@takeokunn
takeokunn deleted the fix/carp-comma-is-whitespace branch August 3, 2026 23:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant