Skip to content

Commit e5f5eab

Browse files
committed
cleanup
1 parent 465bd74 commit e5f5eab

3 files changed

Lines changed: 31 additions & 61 deletions

File tree

compiler/syntax/src/res_core.ml

Lines changed: 21 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4411,6 +4411,25 @@ and parse_dict_expr ~start_pos p =
44114411
chunk_loc))
44124412
[(Asttypes.Nolabel, Ast_helper.Exp.array ~loc:chunk_loc key_value_pairs)]
44134413
in
4414+
let make_dict_spread target_expr source_parts =
4415+
let spread_ident =
4416+
Ast_helper.Exp.ident ~loc ~attrs:[dict_spread_attr]
4417+
(Location.mkloc
4418+
(Longident.Ldot (Longident.Lident Primitive_modules.dict, "spread"))
4419+
loc)
4420+
in
4421+
Ast_helper.Exp.apply ~loc spread_ident
4422+
[
4423+
(Asttypes.Nolabel, target_expr);
4424+
( Asttypes.Nolabel,
4425+
Ast_helper.Exp.array ~loc
4426+
(List.map
4427+
(function
4428+
| `Rows rows -> make_dict_chunk rows
4429+
| `Spread spread_expr -> spread_expr)
4430+
source_parts) );
4431+
]
4432+
in
44144433
let grouped_parts =
44154434
let rec loop current_rows acc = function
44164435
| [] ->
@@ -4436,47 +4455,8 @@ and parse_dict_expr ~start_pos p =
44364455
| [] -> make_dict_chunk ~loc_override:loc []
44374456
| [`Rows rows] -> make_dict_chunk ~loc_override:loc rows
44384457
| `Rows target_rows :: source_parts ->
4439-
let spread_ident =
4440-
Ast_helper.Exp.ident ~loc ~attrs:[dict_spread_attr]
4441-
(Location.mkloc
4442-
(Longident.Ldot (Longident.Lident Primitive_modules.dict, "spread"))
4443-
loc)
4444-
in
4445-
let spread =
4446-
Ast_helper.Exp.apply ~loc spread_ident
4447-
[
4448-
(Asttypes.Nolabel, make_dict_chunk target_rows);
4449-
( Asttypes.Nolabel,
4450-
Ast_helper.Exp.array ~loc
4451-
(List.map
4452-
(function
4453-
| `Rows rows -> make_dict_chunk rows
4454-
| `Spread spread_expr -> spread_expr)
4455-
source_parts) );
4456-
]
4457-
in
4458-
spread
4459-
| source_parts ->
4460-
let spread_ident =
4461-
Ast_helper.Exp.ident ~loc ~attrs:[dict_spread_attr]
4462-
(Location.mkloc
4463-
(Longident.Ldot (Longident.Lident Primitive_modules.dict, "spread"))
4464-
loc)
4465-
in
4466-
let spread =
4467-
Ast_helper.Exp.apply ~loc spread_ident
4468-
[
4469-
(Asttypes.Nolabel, make_dict_chunk []);
4470-
( Asttypes.Nolabel,
4471-
Ast_helper.Exp.array ~loc
4472-
(List.map
4473-
(function
4474-
| `Rows rows -> make_dict_chunk rows
4475-
| `Spread spread_expr -> spread_expr)
4476-
source_parts) );
4477-
]
4478-
in
4479-
spread
4458+
make_dict_spread (make_dict_chunk target_rows) source_parts
4459+
| source_parts -> make_dict_spread (make_dict_chunk []) source_parts
44804460

44814461
and parse_array_exp p =
44824462
let start_pos = p.Parser.start_pos in

compiler/syntax/src/res_grammar.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ let is_mod_expr_start = function
224224
| _ -> false
225225

226226
let is_dict_row_start = function
227-
| Token.DotDotDot | Token.String _ -> true
227+
| Token.DotDotDot | String _ -> true
228228
| _ -> false
229229

230230
let is_record_row_start = function

compiler/syntax/src/res_parsetree_viewer.ml

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -748,17 +748,17 @@ let is_spread_belt_array_concat expr =
748748
has_spread_attr expr.pexp_attributes
749749
| _ -> false
750750

751-
let collect_spread_dict_expr_parts expr =
752-
let is_tuple_array_expr (expr : Parsetree.expression) =
753-
let is_plain_tuple (expr : Parsetree.expression) =
754-
match expr with
755-
| {pexp_desc = Pexp_tuple _} -> true
756-
| _ -> false
757-
in
751+
let is_tuple_array (expr : Parsetree.expression) =
752+
let is_plain_tuple (expr : Parsetree.expression) =
758753
match expr with
759-
| {pexp_desc = Pexp_array items} -> List.for_all is_plain_tuple items
754+
| {pexp_desc = Pexp_tuple _} -> true
760755
| _ -> false
761756
in
757+
match expr with
758+
| {pexp_desc = Pexp_array items} -> List.for_all is_plain_tuple items
759+
| _ -> false
760+
761+
let collect_spread_dict_expr_parts expr =
762762
let extract_literal_dict_rows (expr : Parsetree.expression) =
763763
match expr with
764764
| {
@@ -774,7 +774,7 @@ let collect_spread_dict_expr_parts expr =
774774
args = [(Nolabel, key_values)];
775775
};
776776
}
777-
when is_tuple_array_expr key_values ->
777+
when is_tuple_array key_values ->
778778
Some key_values
779779
| _ -> None
780780
in
@@ -869,16 +869,6 @@ let is_rewritten_underscore_apply_sugar expr =
869869
| Pexp_ident {txt = Longident.Lident "_"} -> true
870870
| _ -> false
871871

872-
let is_tuple_array (expr : Parsetree.expression) =
873-
let is_plain_tuple (expr : Parsetree.expression) =
874-
match expr with
875-
| {pexp_desc = Pexp_tuple _} -> true
876-
| _ -> false
877-
in
878-
match expr with
879-
| {pexp_desc = Pexp_array items} -> List.for_all is_plain_tuple items
880-
| _ -> false
881-
882872
let get_jsx_prop_loc = function
883873
| Parsetree.JSXPropPunning (_, name) -> name.loc
884874
| Parsetree.JSXPropValue (name, _, value) ->

0 commit comments

Comments
 (0)