Skip to content

Commit a1e7cc5

Browse files
committed
JSX preserve mode: fix "make is not a valid component name"
1 parent a09a3d7 commit a1e7cc5

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

compiler/core/lam_pass_remove_alias.ml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,12 @@ let simplify_alias (meta : Lam_stats.t) (lam : Lam.t) : Lam.t =
5050
Main use case, we should detect inline all immutable block .. *)
5151
match simpl arg with
5252
| Lvar v as l ->
53-
Lam_util.field_flatten_get
54-
(fun _ -> Lam.prim ~primitive ~args:[l] loc)
55-
v i info meta.ident_tbl
53+
(* Preserve module qualification when JSX preserve mode is enabled
54+
This ensures component names like X.make are not flattened to just make
55+
in JSX preserve mode *)
56+
let prim = Lam.prim ~primitive ~args:[l] loc in
57+
if !Js_config.jsx_preserve then prim
58+
else Lam_util.field_flatten_get (fun _ -> prim) v i info meta.ident_tbl
5659
| l -> Lam.prim ~primitive ~args:[l] loc)
5760
| Lprim
5861
{

tests/tests/src/async_jsx.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ let Foo = {
2525

2626
function Async_jsx$Bar(props) {
2727
return <div>
28-
<Async_jsx$Foo />
28+
<Foo.make />
2929
</div>;
3030
}
3131

tests/tests/src/jsx_preserve_test.mjs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ let _multiple_element_children = <div>
2020
<h1>
2121
{"Hello, world!"}
2222
</h1>
23-
<Jsx_preserve_test$Icon />
23+
<Icon.make />
2424
</div>;
2525

2626
let _single_element_fragment = <>
@@ -141,7 +141,7 @@ let B = {
141141

142142
let _external_component_with_children = <QueryClientProvider>
143143
<strong />
144-
<Jsx_preserve_test$B />
144+
<B.make />
145145
</QueryClientProvider>;
146146

147147
function Jsx_preserve_test$MyWeirdComponent(props) {
@@ -155,7 +155,7 @@ let MyWeirdComponent = {
155155
make: Jsx_preserve_test$MyWeirdComponent
156156
};
157157

158-
let _escaped_jsx_prop = <Jsx_preserve_test$MyWeirdComponent
158+
let _escaped_jsx_prop = <MyWeirdComponent.make
159159
MyWeirdProp={"bar"}
160160
/>;
161161

@@ -197,7 +197,7 @@ let ComponentWithOptionalProps = {
197197
make: Jsx_preserve_test$ComponentWithOptionalProps
198198
};
199199

200-
let _optional_props = <Jsx_preserve_test$ComponentWithOptionalProps
200+
let _optional_props = <ComponentWithOptionalProps.make
201201
i={1}
202202
s={"test"}
203203
element={<div />}

0 commit comments

Comments
 (0)