Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit c8a9e8e

Browse files
committed
fix the usage of spreaProps withouth other props
1 parent 29cd95e commit c8a9e8e

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

cli/reactjs_jsx_v4.ml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,20 +208,21 @@ let recordFromProps ~loc ~removeKey callArguments =
208208
let spreadFields =
209209
propsToSpread |> List.map (fun (_, expression) -> expression)
210210
in
211-
match spreadFields with
212-
| [] ->
211+
match (fields, spreadFields) with
212+
| [], [spreadProps] | [], spreadProps :: _ -> spreadProps
213+
| _, [] ->
213214
{
214215
pexp_desc = Pexp_record (fields, None);
215216
pexp_loc = loc;
216217
pexp_attributes = [];
217218
}
218-
| [spreadProps] ->
219+
| _, [spreadProps] ->
219220
{
220221
pexp_desc = Pexp_record (fields, Some spreadProps);
221222
pexp_loc = loc;
222223
pexp_attributes = [];
223224
}
224-
| spreadProps :: _ ->
225+
| _, spreadProps :: _ ->
225226
{
226227
pexp_desc = Pexp_record (fields, Some spreadProps);
227228
pexp_loc = loc;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
let c0 = React.jsx(A.make, {...p, x: "x"})
2+
3+
// ignore second one
4+
let c0 = React.jsx(A.make, {...p0, x: "x"})
5+
6+
// only spread props
7+
let c1 = React.jsx(A.make, p)
8+
9+
// reversed order
10+
let c2 = React.jsx(A.make, {...p, x: "x"})

tests/ppx/react/spreadProps.res

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
let c0 = <A x="x" {...p} />
2+
3+
// ignore second one
4+
let c0 = <A x="x" {...p0} {...p1} />
5+
6+
// only spread props
7+
let c1 = <A {...p} />
8+
9+
// reversed order
10+
let c2 = <A {...p} x="x" />

0 commit comments

Comments
 (0)