package wax-lib
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=41b580846af8d41bdf6c3f005f62e38feda3e60fe2e9e4aa440db34ce515a153
sha512=4b3a181fcc7d743194a8647260870fb5190770066a197bcc48104c2b77fd40c643228b795c2bcd6b29a120820e969eb42a37a9bcec98b3f608d13f152d9f6579
doc/wax-lib.conversion/Wax_conversion/Recover_trycatch/index.html
Module Wax_conversion.Recover_trycatchSource
val module_ :
Wax_lang.Ast.location Wax_lang.Ast.module_ ->
Wax_lang.Ast.location Wax_lang.Ast.module_module_ m rewrites each function body, folding the try_table-plus-block-ladder shape — a join block wrapping one parameterless block per catch clause, the try_table innermost with its value escaping to the join, and each handler's code trailing its block — into the structured try { … } catch { tag => { … } … } whose arms are honest fall-through code. The join label is kept as the try's label only when the bodies still branch to it. Ladders that do not conform (a targeted arm label, out-of-order clauses, a mid-list catch-all, …) are left as-is, decompiling to the bracket form instead.
Folding is the exact inverse of Ast_utils.lower_trycatch, so re-lowering reproduces the original blocks and the rewrite preserves runtime semantics. Meant to run on From_wasm.module_ output before Sink_let.module_ (which would otherwise sink locals into the ladder blocks and hide the shape).