Repository navigation
Issues from a bug hunt over master (eb087382 to cd641cbc) #9109
Description
Found by a bug hunt over the 16 commits from eb087382 to cd641cbc (26–27 October 2026).
The hunt started from the changes in those commits, looked for regressions, and reported older bugs it ran into along the way. Every finding was reproduced on a build of cd641cbc, checked again by an independent pass, and compiled at b123b7c3 to tell regressions apart from older bugs. Existing issues were searched first, and related ones are linked from each issue.
In numbers: 11 issues covering 22 findings. Three more suspected problems turned out not to be bugs and are not filed. 5 are regressions in this range: the untagged Date case in the first issue, both line-ending problems, the failwith placeholder, and the per-module copyWithin type.
Wrong code or wrong values
-
x !== true && x !== falseis simplified tofalsewhenxis not a boolean #9098x !== true && x !== falseis simplified tofalsewhenxis not a boolean (regression for one shape) - Float constants never compare equal in the JS simplifier:
x == 2.5 && x == 2.5compiles tofalse#9099 Float constants never compare equal in the JS simplifier:x == 2.5 && x == 2.5compiles tofalse -
bsc -formatchanges string literals that contain line breaks, and is not idempotent on\r\r\n#9100bsc -formatchanges string literals that contain line breaks, and is not idempotent on\r\r\n(regression) - Formatter moves an attribute in front of
~a as x: intontox#9101 Formatter moves an attribute in front of~a as x: intontox - TypedArray:
copyWithin/copyAllWithinare typed as returningarray, andTypedArray.mapcan change the element type #9103 TypedArray:copyWithin/copyAllWithinare typed as returningarray, andTypedArray.mapcan change the element type - JSX: plain and preserve mode evaluate children and props in different orders #9104 JSX: plain and preserve mode evaluate children and props in different orders
Tooling and diagnostics
- Editor code actions generate
failwith("TODO"), which no longer exists #9102 Editor code actions generatefailwith("TODO"), which no longer exists (regression) - Coercion hint: suggestion that doesn't compile after a parenthesized operand, and the hint names the expanded type #9105 Coercion hint: suggestion that doesn't compile after a parenthesized operand, and the hint names the expanded type
Parser and printer
- Parser rejects
private @attr {…}and a doc comment before a non-record type #9106 Parser rejectsprivate @attr {…}and a doc comment before a non-record type - Formatter: five cases where comments and doc comments are placed wrongly #9107 Formatter: five cases where comments and doc comments are placed wrongly
- Lexer rejects a UTF-8 BOM, and a lone
\rdoes not end a line #9108 Lexer rejects a UTF-8 BOM, and a lone\rdoes not end a line
🤖 Generated with Claude Code
Activity
x !== true && x !== falseis simplified tofalsewhenxis not a boolean #9098x == 2.5 && x == 2.5compiles tofalse#9099bsc -formatchanges string literals that contain line breaks, and is not idempotent on\r\r\n#9100~a as x: intontox#9101failwith("TODO"), which no longer exists #9102copyWithin/copyAllWithinare typed as returningarray, andTypedArray.mapcan change the element type #9103private @attr {…}and a doc comment before a non-record type #9106\rdoes not end a line #9108cknitt commentedon Oct 29, 2026
All 11 issues are fixed and closed: #9098 (#9113), #9099 (#9114), #9100 (#9116), #9101 (#9111), #9102 (#9110), #9103 (#9112), #9104 (#9117), #9105 (#9118), #9106 (#9115), #9107 (#9119), #9108 (#9120). The prefix-dependent reading of
{...spread types found while fixing #9106 is tracked separately in #9122.🤖 Generated with Claude Code
https://claude.ai/code/session_01Kr4cjoUi2f5VpMvE6wT9bo