Skip to content

Commit 31a49b2

Browse files
committed
cleanup
1 parent 0444f03 commit 31a49b2

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
@@ -4339,6 +4339,25 @@ and parse_dict_expr ~start_pos p =
43394339
chunk_loc))
43404340
[(Asttypes.Nolabel, Ast_helper.Exp.array ~loc:chunk_loc key_value_pairs)]
43414341
in
4342+
let make_dict_spread target_expr source_parts =
4343+
let spread_ident =
4344+
Ast_helper.Exp.ident ~loc ~attrs:[dict_spread_attr]
4345+
(Location.mkloc
4346+
(Longident.Ldot (Longident.Lident Primitive_modules.dict, "spread"))
4347+
loc)
4348+
in
4349+
Ast_helper.Exp.apply ~loc spread_ident
4350+
[
4351+
(Asttypes.Nolabel, target_expr);
4352+
( Asttypes.Nolabel,
4353+
Ast_helper.Exp.array ~loc
4354+
(List.map
4355+
(function
4356+
| `Rows rows -> make_dict_chunk rows
4357+
| `Spread spread_expr -> spread_expr)
4358+
source_parts) );
4359+
]
4360+
in
43424361
let grouped_parts =
43434362
let rec loop current_rows acc = function
43444363
| [] ->
@@ -4364,47 +4383,8 @@ and parse_dict_expr ~start_pos p =
43644383
| [] -> make_dict_chunk ~loc_override:loc []
43654384
| [`Rows rows] -> make_dict_chunk ~loc_override:loc rows
43664385
| `Rows target_rows :: source_parts ->
4367-
let spread_ident =
4368-
Ast_helper.Exp.ident ~loc ~attrs:[dict_spread_attr]
4369-
(Location.mkloc
4370-
(Longident.Ldot (Longident.Lident Primitive_modules.dict, "spread"))
4371-
loc)
4372-
in
4373-
let spread =
4374-
Ast_helper.Exp.apply ~loc spread_ident
4375-
[
4376-
(Asttypes.Nolabel, make_dict_chunk target_rows);
4377-
( Asttypes.Nolabel,
4378-
Ast_helper.Exp.array ~loc
4379-
(List.map
4380-
(function
4381-
| `Rows rows -> make_dict_chunk rows
4382-
| `Spread spread_expr -> spread_expr)
4383-
source_parts) );
4384-
]
4385-
in
4386-
spread
4387-
| source_parts ->
4388-
let spread_ident =
4389-
Ast_helper.Exp.ident ~loc ~attrs:[dict_spread_attr]
4390-
(Location.mkloc
4391-
(Longident.Ldot (Longident.Lident Primitive_modules.dict, "spread"))
4392-
loc)
4393-
in
4394-
let spread =
4395-
Ast_helper.Exp.apply ~loc spread_ident
4396-
[
4397-
(Asttypes.Nolabel, make_dict_chunk []);
4398-
( Asttypes.Nolabel,
4399-
Ast_helper.Exp.array ~loc
4400-
(List.map
4401-
(function
4402-
| `Rows rows -> make_dict_chunk rows
4403-
| `Spread spread_expr -> spread_expr)
4404-
source_parts) );
4405-
]
4406-
in
4407-
spread
4386+
make_dict_spread (make_dict_chunk target_rows) source_parts
4387+
| source_parts -> make_dict_spread (make_dict_chunk []) source_parts
44084388

44094389
and parse_array_exp p =
44104390
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
@@ -747,17 +747,17 @@ let is_spread_belt_array_concat expr =
747747
has_spread_attr expr.pexp_attributes
748748
| _ -> false
749749

750-
let collect_spread_dict_expr_parts expr =
751-
let is_tuple_array_expr (expr : Parsetree.expression) =
752-
let is_plain_tuple (expr : Parsetree.expression) =
753-
match expr with
754-
| {pexp_desc = Pexp_tuple _} -> true
755-
| _ -> false
756-
in
750+
let is_tuple_array (expr : Parsetree.expression) =
751+
let is_plain_tuple (expr : Parsetree.expression) =
757752
match expr with
758-
| {pexp_desc = Pexp_array items} -> List.for_all is_plain_tuple items
753+
| {pexp_desc = Pexp_tuple _} -> true
759754
| _ -> false
760755
in
756+
match expr with
757+
| {pexp_desc = Pexp_array items} -> List.for_all is_plain_tuple items
758+
| _ -> false
759+
760+
let collect_spread_dict_expr_parts expr =
761761
let extract_literal_dict_rows (expr : Parsetree.expression) =
762762
match expr with
763763
| {
@@ -773,7 +773,7 @@ let collect_spread_dict_expr_parts expr =
773773
args = [(Nolabel, key_values)];
774774
};
775775
}
776-
when is_tuple_array_expr key_values ->
776+
when is_tuple_array key_values ->
777777
Some key_values
778778
| _ -> None
779779
in
@@ -868,16 +868,6 @@ let is_rewritten_underscore_apply_sugar expr =
868868
| Pexp_ident {txt = Longident.Lident "_"} -> true
869869
| _ -> false
870870

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

0 commit comments

Comments
 (0)