@@ -115,21 +115,31 @@ let mapper =
115
115
| Pexp_extension (({txt: (
116
116
"opt" | "opt_consume"
117
117
| "try" | "try_wrap"
118
- ) as txt , loc}, PStr ([ {pstr_desc: Pstr_eval ({pexp_desc: Pexp_let (Nonrecursive , bindings , continuation )}, _attributes )}] ))) => {
119
- let (front , explanation ) = switch (txt) {
120
- | "opt" => ([% expr Monads . Option . bind], opt_explanation)
121
- | "opt_consume" => ([% expr Monads . Option . consume], opt_consume_explanation)
122
- | "try" => ([% expr Monads . Result . bind], "Sugar for the Result type" )
123
- | "try_wrap" => ([% expr Monads . Result . map], "Sugar for the Result type - auto-wraps in `Ok()`" )
124
- | _ => assert (false )
125
- };
118
+ ) as txt }, PStr ([ {pstr_desc: Pstr_eval ({pexp_desc: Pexp_let (Nonrecursive , bindings , continuation )}, _attributes )}] ))) => {
126
119
let (pat , expr ) = process_bindings(bindings);
127
- Ast_helper . Exp . attr(
128
- [% expr [% e front]([% e mapper. expr(mapper, expr)], ~f= ([% p pat]) => [% e mapper. expr(mapper, continuation)])],
129
- ({txt: "ocaml.explanation" , loc}, PStr ([
130
- Ast_helper . Str . eval(Ast_helper . Exp . constant(Pconst_string (explanation, None )))
131
- ] ))
132
- )
120
+ switch (txt) {
121
+ | "opt" =>
122
+ [% expr [% e [% expr switch [%e mapper. expr(mapper, expr)] {
123
+ | None => None
124
+ | Some ([%p pat ]) => [% e mapper. expr(mapper, continuation)]
125
+ }]]]
126
+ | "opt_consume" =>
127
+ [% expr [% e [% expr switch [%e mapper. expr(mapper, expr)] {
128
+ | None => ()
129
+ | Some ([%p pat ]) => [% e mapper. expr(mapper, continuation)]
130
+ }]]]
131
+ | "try" =>
132
+ [% expr [% e [% expr switch [%e mapper. expr(mapper, expr)] {
133
+ | Error (e ) => Error (e)
134
+ | Ok ([%p pat ]) => [% e mapper. expr(mapper, continuation)]
135
+ }]]]
136
+ | "try_wrap" =>
137
+ [% expr [% e [% expr switch [%e mapper. expr(mapper, expr)] {
138
+ | Error (e ) => Error (e)
139
+ | Ok ([%p pat ]) => Ok ([% e mapper. expr(mapper, continuation)])
140
+ }]]]
141
+ | _ => assert (false )
142
+ };
133
143
}
134
144
| _ => Ast_mapper . default_mapper. expr(mapper, expr)
135
145
}
0 commit comments