@@ -304,7 +304,7 @@ let parse_annots (m : module_) : Custom.section list =
304304%token MUT FIELD STRUCT ARRAY SUB FINAL REC
305305%token UNREACHABLE NOP DROP SELECT
306306%token BLOCK END IF THEN ELSE LOOP
307- %token CONT_NEW CONT_BIND SUSPEND RESUME RESUME_THROW SWITCH
307+ %token CONT_NEW CONT_BIND SUSPEND RESUME RESUME_THROW RESUME_THROW_REF SWITCH
308308%token BR BR_IF BR_TABLE BR_ON_NON_NULL
309309%token<Ast.idx -> Ast.instr'> BR_ON_NULL
310310%token<Ast.idx -> Types.ref_type -> Types.ref_type -> Ast.instr'> BR_ON_CAST
@@ -789,6 +789,11 @@ resume_instr_instr_list :
789789 let x = $2 c type_ in
790790 let tag = $3 c tag in
791791 let hs, es = $4 c in (resume_throw x tag hs @@ loc1) :: es }
792+ | RESUME_THROW_REF var resume_instr_handler_instr
793+ { let loc1 = $loc($1) in
794+ fun c ->
795+ let x = $2 c type_ in
796+ let hs, es = $3 c in (resume_throw_ref x hs @@ loc1) :: es }
792797
793798resume_instr_handler_instr :
794799 | LPAR ON var var RPAR resume_instr_handler_instr
@@ -907,6 +912,11 @@ expr1 : /* Sugar */
907912 let tag = $3 c tag in
908913 let hs, es = $4 c in
909914 es, resume_throw x tag hs }
915+ | RESUME_THROW_REF var resume_expr_handler
916+ { fun c ->
917+ let x = $2 c type_ in
918+ let hs, es = $3 c in
919+ es, resume_throw_ref x hs }
910920 | BLOCK labeling_opt block
911921 { fun c -> let c' = $2 c [] in let bt, es = $3 c' in [], block bt es }
912922 | LOOP labeling_opt block
0 commit comments