You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Neutralize moved-out match scrutinee payloads so enum drops cannot double-free.
Null variant union fields when pattern bindings take ownership, add cgen regression coverage for the test_fs_read shape, and regenerate example C snapshots where output changed.
Copy file name to clipboardExpand all lines: .cursor/skills/finding-ion-bugs/references/bug-hotspots.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ CLI errors use `TypeCheckError` Debug form (`UseAfterMove { ... }`). LSP reforma
13
13
## Codegen (`src/cgen/`)
14
14
15
15
- Drop order and `ion_drop_*` for moved fields
16
+
-**Match scrutinee move-out**: pattern payload bindings null `match_val_N.data.variant_*` fields when ownership transfers (`statement_match_payload_move_neutralizes_scrutinee`); whole-enum binding arms clear active variant payloads via `emit_match_scrutinee_whole_enum_moved_out`
16
17
-**Return unwind**: all function exits use `emit_function_return` (`ret_val`, `scope_emit_return_unwind`, `goto epilogue`), including diverging `return` inside rvalue `match` arms (`rvalue_match_divergent_return_unwinds_owned`). Value-producing rvalue arms still assign and `break` from the `switch`.
17
18
-`Box`, `Vec`, `String` layout vs `runtime/ion_runtime.h`
18
19
- Single-file merge (`merge_modules`) vs `--mode multi` divergences
0 commit comments