Skip to content

Commit 094b858

Browse files
committed
Code quality.
1 parent 500487f commit 094b858

File tree

3 files changed

+25
-28
lines changed

3 files changed

+25
-28
lines changed

src/analysis/parsetree_utils.ml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ type nonrec constant_desc = constant_desc
66

77
let constant_desc c = c.pconst_desc
88

9-
let filter_attr =
9+
let filter_merlin_attr =
1010
let default = Ast_mapper.default_mapper in
1111
let keep attr =
1212
let { Location.txt; _ }, _ = Ast_helper.Attr.as_tuple attr in
@@ -17,4 +17,5 @@ let filter_attr =
1717
in
1818
{ default with Ast_mapper.attributes }
1919

20-
let filter_expr_attr expr = filter_attr.Ast_mapper.expr filter_attr expr
20+
let expr_remove_merlin_attributes expr =
21+
filter_merlin_attr.Ast_mapper.expr filter_merlin_attr expr

src/analysis/parsetree_utils.mli

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ type nonrec constant_desc = constant_desc
77

88
val constant_desc : constant -> constant_desc
99

10-
val filter_expr_attr : expression -> expression
10+
(** Filter parsetree attributes which are prefixed by ["merlin."] in given expression. *)
11+
val expr_remove_merlin_attributes : expression -> expression

src/analysis/refactor_extract_region.ml

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8181
end
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

10095
type 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

268263
let 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

Comments
 (0)