Skip to content

Commit 3553b8b

Browse files
committed
apply React.array for children of fragment
1 parent 877b835 commit 3553b8b

File tree

4 files changed

+17
-11
lines changed

4 files changed

+17
-11
lines changed

jscomp/syntax/src/reactjs_jsx_v4.ml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,6 +1361,12 @@ let expr ~config mapper expression =
13611361
(* FIXME: missing loc *)
13621362
Exp.record [(Location.mknoloc (Lident "children"), children)] None
13631363
in
1364+
let applyReactArray expr =
1365+
Exp.apply
1366+
(Exp.ident
1367+
{txt = Ldot (Lident "React", "array"); loc = Location.none})
1368+
[(Nolabel, expr)]
1369+
in
13641370
let args =
13651371
[
13661372
(nolabel, fragment);
@@ -1370,8 +1376,8 @@ let expr ~config mapper expression =
13701376
match children with
13711377
| [] -> emptyRecord ~loc:Location.none
13721378
| [child] -> recordOfChildren child
1373-
| _ -> recordOfChildren childrenExpr)
1374-
| _ -> recordOfChildren childrenExpr );
1379+
| _ -> recordOfChildren @@ applyReactArray childrenExpr)
1380+
| _ -> recordOfChildren @@ applyReactArray childrenExpr );
13751381
]
13761382
in
13771383
let countOfChildren = function

jscomp/syntax/tests/ppx/react/expected/fragment.res.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ let _ = React.createElement(
88
let _ = React.createElement(
99
React.fragment,
1010
{
11-
children: [
11+
children: React.array([
1212
ReactDOM.createDOMElementVariadic("div", []),
1313
ReactDOM.createDOMElementVariadic("div", []),
14-
],
14+
]),
1515
},
1616
)
1717
let _ = React.createElement(React.fragment, {children: React.createElement(React.fragment, {})})
@@ -35,7 +35,7 @@ let _ = React.jsx(React.jsxFragment, {})
3535
let _ = React.jsx(React.jsxFragment, {children: ReactDOM.jsx("div", {})})
3636
let _ = React.jsxs(
3737
React.jsxFragment,
38-
{children: [ReactDOM.jsx("div", {}), ReactDOM.jsx("div", {})]},
38+
{children: React.array([ReactDOM.jsx("div", {}), ReactDOM.jsx("div", {})])},
3939
)
4040
let _ = React.jsx(React.jsxFragment, {children: React.jsx(React.jsxFragment, {})})
4141
let _ = React.jsx(Z.make, {})

jscomp/syntax/tests/ppx/react/expected/noPropsWithKey.res.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ module V4C = {
2525
React.createElement(
2626
React.fragment,
2727
{
28-
children: [
28+
children: React.array([
2929
JsxPPXReactSupport.createElementWithKey(~key="k", V4CA.make, {}),
3030
JsxPPXReactSupport.createElementWithKey(~key="k", V4CB.make, {}),
31-
],
31+
]),
3232
},
3333
)
3434
let make = {
@@ -65,10 +65,10 @@ module V4C = {
6565
React.jsxs(
6666
React.jsxFragment,
6767
{
68-
children: [
68+
children: React.array([
6969
React.jsxKeyed(V4CA.make, {}, ~key="k", ()),
7070
React.jsxKeyed(V4CB.make, {}, ~key="k", ()),
71-
],
71+
]),
7272
},
7373
)
7474
let make = {

jscomp/syntax/tests/ppx/react/expected/removedKeyProp.res.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ let make = (_: props) =>
2727
React.createElement(
2828
React.fragment,
2929
{
30-
children: [
30+
children: React.array([
3131
JsxPPXReactSupport.createElementWithKey(~key="k", Foo.make, {x: "x", y: "y"}),
3232
React.createElement(Foo.make, {x: "x", y: "y"}),
3333
JsxPPXReactSupport.createElementWithKey(
@@ -43,7 +43,7 @@ let make = (_: props) =>
4343
children: React.createElement(Foo.make, {x: "x", y: "y"}),
4444
},
4545
),
46-
],
46+
]),
4747
},
4848
)
4949
let make = {

0 commit comments

Comments
 (0)