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
Document rvalue-match divergent return unwind gap and add match-arm drop test.
Note the bare-C-return path in emit_match_arm_result_from_stmts and finding-ion-bugs hotspots, add outer_return_drops_after_inner_match_arm_return, and regenerate text_summary.c.
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
+
-**Return unwind**: statement `return` uses `scope_emit_return_unwind` in `generate_stmt` (`if`/`while`/`loop`/statement `match`/`unsafe`). Rvalue `match` diverging arms use `emit_match_arm_result_from_stmts`, which emits bare C `return` without unwind; tc only (`test_match_arm_divergent_rvalue.ion`). Open: owned bindings live at a diverging rvalue arm may leak; unconfirmed.
16
17
-`Box`, `Vec`, `String` layout vs `runtime/ion_runtime.h`
17
18
- Single-file merge (`merge_modules`) vs `--mode multi` divergences
18
19
-`extern "C"` calls only inside `unsafe` blocks in source; cgen must not strip guards
0 commit comments