@@ -29,7 +29,7 @@ module Gen = struct
2929 let toplevel_let ~name ~body =
3030 let open Ast_helper in
3131 let pattern = Pat. mk (Ppat_var { txt = name; loc = Location. none }) in
32- let body = Parsetree_utils. filter_expr_attr body in
32+ let body = Parsetree_utils. expr_remove_merlin_attributes body in
3333 Str. value Nonrecursive [ Vb. mk pattern body ]
3434
3535 (* Generates [let name () = body]. *)
@@ -80,22 +80,17 @@ module Gen = struct
8080 |> fun_apply
8181end
8282
83- module Msource = struct
84- include Msource
85-
86- (* TODO: Maybe add this directly in [Msource]? *)
87- let sub_loc src loc =
88- let (`Offset start_offset) =
89- let line, col = Lexing. split_pos loc.Location. loc_start in
90- Msource. get_offset src (`Logical (line, col))
91- in
92- let (`Offset end_offset) =
93- `Logical (Lexing. split_pos loc.loc_end) |> Msource. get_offset src
94- in
95- String. sub (Msource. text src) ~pos: start_offset
96- ~len: (end_offset - start_offset)
97- |> Msource. make
98- end
83+ let source_sub_loc src loc =
84+ let (`Offset start_offset) =
85+ let line, col = Lexing. split_pos loc.Location. loc_start in
86+ Msource. get_offset src (`Logical (line, col))
87+ in
88+ let (`Offset end_offset) =
89+ `Logical (Lexing. split_pos loc.loc_end) |> Msource. get_offset src
90+ in
91+ String. sub (Msource. text src) ~pos: start_offset
92+ ~len: (end_offset - start_offset)
93+ |> Msource. make
9994
10095type analysis = { bounded_vars : Path .t list ; gen_binding_kind : rec_flag }
10196
@@ -204,7 +199,7 @@ let extract_to_toplevel
204199 let fresh_call =
205200 generated_call ~name: val_name |> Format. asprintf " %a" Pprintast. expression
206201 in
207- let toplevel_item_span = Msource. sub_loc buffer toplevel_item.loc in
202+ let toplevel_item_span = source_sub_loc buffer toplevel_item.loc in
208203 let subst_loc =
209204 let start_lnum =
210205 1 + expr.exp_loc.Location. loc_start.pos_lnum
@@ -267,9 +262,9 @@ let extract_to_toplevel
267262
268263let extract_const_to_toplevel ?extract_name expr ~expr_env ~toplevel_item =
269264 let name =
270- Option. fold extract_name
271- ~none: ( Default { basename = " const_name" })
272- ~some: ( fun name -> Fixed name)
265+ match extract_name with
266+ | None -> Default { basename = " const_name" }
267+ | Some name -> Fixed name
273268 in
274269 extract_to_toplevel
275270 { expr;
@@ -292,17 +287,17 @@ let extract_expr_to_toplevel ?extract_name expr ~expr_env ~toplevel_item
292287 in
293288 let generated_binding, generated_call =
294289 match bounded_vars with
295- | [] when Fun. negate is_function expr ->
290+ | [] when not ( is_function expr) ->
296291 (* If the extracted expr is already a function, no need to delayed computation
297292 with a unit parameter. *)
298293 (Gen. let_unit_toplevel, Gen. fun_apply_unit)
299294 | _ ->
300295 (Gen. toplevel_function bounded_vars, Gen. fun_apply_params bounded_vars)
301296 in
302297 let name =
303- Option. fold extract_name
304- ~none: ( Default { basename = " fun_name" })
305- ~some: ( fun name -> Fixed name)
298+ match extract_name with
299+ | None -> Default { basename = " fun_name" }
300+ | Some name -> Fixed name
306301 in
307302 extract_to_toplevel
308303 { expr;
0 commit comments