167:14] age[167:15->167:18]=...[167:19->167:21]> _children:167:22
Completable: Cjsx([Comp], age, [age])
diff --git a/tests/syntax_tests/data/conversion/reason/expected/string.res.txt b/tests/syntax_tests/data/conversion/reason/expected/string.res.txt
index dde635285c..217af2ddad 100644
--- a/tests/syntax_tests/data/conversion/reason/expected/string.res.txt
+++ b/tests/syntax_tests/data/conversion/reason/expected/string.res.txt
@@ -8,7 +8,7 @@ carriage return`
let x = "\""
let y = "\n"
-(<> {"\n"->React.string} >)
+<> {"\n"->React.string} >
// The `//` should not result into an extra comment
let x = `https://www.apple.com`
diff --git a/tests/syntax_tests/data/parsing/grammar/expressions/expected/bracedOrRecord.res.txt b/tests/syntax_tests/data/parsing/grammar/expressions/expected/bracedOrRecord.res.txt
index d561dd0ad7..cdb2da8111 100644
--- a/tests/syntax_tests/data/parsing/grammar/expressions/expected/bracedOrRecord.res.txt
+++ b/tests/syntax_tests/data/parsing/grammar/expressions/expected/bracedOrRecord.res.txt
@@ -26,4 +26,4 @@ let f = ((fun [arity:1]event -> (event.target).value)[@res.braces ])
let f = ((fun [arity:1]event -> ((event.target).value : string))
[@res.braces ])
let x = ((let a = 1 in let b = 2 in a + b)[@res.braces ])
-;;(([(({js|\n|js} -> React.string)[@res.braces ])])[@JSX ])
\ No newline at end of file
+;;<>(({js|\n|js} -> React.string)[@res.braces ])>
\ No newline at end of file
diff --git a/tests/syntax_tests/data/parsing/grammar/expressions/expected/jsx.res.txt b/tests/syntax_tests/data/parsing/grammar/expressions/expected/jsx.res.txt
index 7a853a944a..b4004d3d06 100644
--- a/tests/syntax_tests/data/parsing/grammar/expressions/expected/jsx.res.txt
+++ b/tests/syntax_tests/data/parsing/grammar/expressions/expected/jsx.res.txt
@@ -51,8 +51,8 @@ let _ = ((el ~punned ~children:[] ())[@JSX ])
let _ = ((el ?punned ~children:[] ())[@JSX ])
let _ = ((el ?a:b ~children:[] ())[@JSX ])
let _ = ((el ?a:b ~children:[] ())[@JSX ])
-let _ = (([])[@JSX ])
-let _ = (([])[@JSX ])
+let _ = <>>
+let _ = <>>
let _ =
((div ~className:{js|menu|js}
~children:[((div ~className:{js|submenu|js} ~children:[sub1] ())
@@ -83,8 +83,7 @@ let _ =
((Outer.createElement ~inner:((Inner.createElement ~children:[] ())
[@JSX ]) ~children:[] ())
[@JSX ])
-let _ =
- ((div ~onClick:onClickHandler ~children:[(([{js|foobar|js}])[@JSX ])] ())
+let _ = ((div ~onClick:onClickHandler ~children:[<>{js|foobar|js}>] ())
[@JSX ])
let _ =
((Window.createElement
@@ -98,21 +97,19 @@ let _ =
} ~children:[] ())
[@JSX ])
let _ = ((OverEager.createElement ~fiber:Metal.fiber ~children:[] ())[@JSX ])
-let arrayOfListOfJsx = [|(([])[@JSX ])|]
-let arrayOfListOfJsx =
- [|(([((Foo.createElement ~children:[] ())[@JSX ])])[@JSX ])|]
+let arrayOfListOfJsx = [|<>>|]
+let arrayOfListOfJsx = [|<>((Foo.createElement ~children:[] ())[@JSX ])>|]
let arrayOfListOfJsx =
- [|(([((Foo.createElement ~children:[] ())[@JSX ])])
- [@JSX ]);(([((Bar.createElement ~children:[] ())[@JSX ])])[@JSX ])|]
-let sameButWithSpaces = [|(([])[@JSX ])|]
-let sameButWithSpaces =
- [|(([((Foo.createElement ~children:[] ())[@JSX ])])[@JSX ])|]
+ [|<>((Foo.createElement ~children:[] ())
+ [@JSX ])>;<>((Bar.createElement ~children:[] ())[@JSX ])>|]
+let sameButWithSpaces = [|<>>|]
+let sameButWithSpaces = [|<>((Foo.createElement ~children:[] ())[@JSX ])>|]
let sameButWithSpaces =
- [|(([((Foo.createElement ~children:[] ())[@JSX ])])
- [@JSX ]);(([((Bar.createElement ~children:[] ())[@JSX ])])[@JSX ])|]
+ [|<>((Foo.createElement ~children:[] ())
+ [@JSX ])>;<>((Bar.createElement ~children:[] ())[@JSX ])>|]
let sameButWithSpaces =
- [|(([((Foo.createElement ~children:[] ())[@JSX ])])
- [@JSX ]);(([((Bar.createElement ~children:[] ())[@JSX ])])[@JSX ])|]
+ [|<>((Foo.createElement ~children:[] ())
+ [@JSX ])>;<>((Bar.createElement ~children:[] ())[@JSX ])>|]
let arrayOfJsx = [||]
let arrayOfJsx = [|((Foo.createElement ~children:[] ())[@JSX ])|]
let arrayOfJsx =
@@ -495,11 +492,11 @@ let _ =
;;((div ~children:[|a|] ())[@JSX ])
;;((div ~children:(1, 2) ())[@JSX ])
;;((div ~children:((array -> f)[@res.braces ]) ())[@JSX ])
-;;(([element])[@JSX ])
-;;(([(((fun [arity:1]a -> 1))[@res.braces ])])[@JSX ])
-;;(([((span ~children:[] ())[@JSX ])])[@JSX ])
-;;(([[|a|]])[@JSX ])
-;;(([(1, 2)])[@JSX ])
-;;(([((array -> f)[@res.braces ])])[@JSX ])
+;;<>element>
+;;<>((fun [arity:1]a -> 1)[@res.braces ])>
+;;<>((span ~children:[] ())[@JSX ])>
+;;<>[|a|]>
+;;<>(1, 2)>
+;;<>((array -> f)[@res.braces ])>
let _ = ((A.createElement ~x:{js|y|js} ~_spreadProps:str ~children:[] ())
[@JSX ])
\ No newline at end of file
diff --git a/tests/syntax_tests/data/printer/expr/expected/braced.res.txt b/tests/syntax_tests/data/printer/expr/expected/braced.res.txt
index 26c9d855b4..80ea824389 100644
--- a/tests/syntax_tests/data/printer/expr/expected/braced.res.txt
+++ b/tests/syntax_tests/data/printer/expr/expected/braced.res.txt
@@ -318,5 +318,5 @@ let x = {
}
// string constant should be printed correct
-(<> {"\n"->React.string} >)
-(<> {"\""->React.string} >)
+<> {"\n"->React.string} >
+<> {"\""->React.string} >
diff --git a/tests/syntax_tests/data/printer/expr/expected/switch.res.txt b/tests/syntax_tests/data/printer/expr/expected/switch.res.txt
index da576e4d29..80b1a07044 100644
--- a/tests/syntax_tests/data/printer/expr/expected/switch.res.txt
+++ b/tests/syntax_tests/data/printer/expr/expected/switch.res.txt
@@ -49,8 +49,7 @@ switch route {
{React.string("Second A div")}
| B =>
- <>
- // fragment tag moves to the next line
+ <> // fragment tag stays after <>
{React.string("First B div")}
{React.string("Second B div")}
>
diff --git a/tests/syntax_tests/data/printer/expr/switch.res b/tests/syntax_tests/data/printer/expr/switch.res
index 7d4f8aa0f6..6887e3adb5 100644
--- a/tests/syntax_tests/data/printer/expr/switch.res
+++ b/tests/syntax_tests/data/printer/expr/switch.res
@@ -44,7 +44,7 @@ switch route {
{React.string("First A div")}
{React.string("Second A div")}
-| B => <> // fragment tag moves to the next line
+| B => <> // fragment tag stays after <>
{React.string("First B div")}
{React.string("Second B div")}
>
diff --git a/tests/tools_tests/package-lock.json b/tests/tools_tests/package-lock.json
index 9d3242c476..7ab9790b95 100644
--- a/tests/tools_tests/package-lock.json
+++ b/tests/tools_tests/package-lock.json
@@ -26,7 +26,7 @@
},
"devDependencies": {
"@biomejs/biome": "1.8.3",
- "mocha": "10.1.0",
+ "mocha": "10.8.2",
"nyc": "15.0.0"
},
"engines": {
diff --git a/tests/tools_tests/ppx/TestPpx.res b/tests/tools_tests/ppx/TestPpx.res
index b18c96a8ae..4262befc9f 100644
--- a/tests/tools_tests/ppx/TestPpx.res
+++ b/tests/tools_tests/ppx/TestPpx.res
@@ -61,3 +61,7 @@ let eq2 = 3 === 3
let test = async () => 12
let f = async () => (await test()) + 1
+
+module Fragments = {
+ let f1 = <> >
+}
diff --git a/tests/tools_tests/src/expected/TestPpx.res.jsout b/tests/tools_tests/src/expected/TestPpx.res.jsout
index 87ea7737ee..829050f25c 100644
--- a/tests/tools_tests/src/expected/TestPpx.res.jsout
+++ b/tests/tools_tests/src/expected/TestPpx.res.jsout
@@ -80,6 +80,10 @@ async function f() {
return await test() + 1 | 0;
}
+let Fragments = {
+ f1: /* [] */0
+};
+
let a = "A";
let b = "B";
@@ -114,4 +118,5 @@ exports.eq = eq;
exports.eq2 = eq2;
exports.test = test;
exports.f = f;
+exports.Fragments = Fragments;
/* Not a pure module */