@@ -1041,28 +1041,28 @@ let path_to_brackets path =
10411041 " [\" " ^ (String. concat " \" ][\" " parts) ^ " \" ]"
10421042
10431043let mangle_export_name_es6 ctx ident =
1044- if ctx.es_version > = 2022 then
1044+ if not (ExtString.String. contains ident '.' ) then
1045+ ident
1046+ else if ctx.es_version > = 2022 then
10451047 (* Keyword: "arbitrary module namespace identifier names" *)
10461048 Printf. sprintf " \" %s\" " ident
10471049 else
10481050 let parts = ExtString.String. nsplit ident " ." in
10491051 String. concat " _" parts
10501052
1051- let tmp_var_counter = ref 0
1052- let export_tmp_name() =
1053- let name = Printf. sprintf " $hx_export_tmp_%d" ! tmp_var_counter in
1054- tmp_var_counter := ! tmp_var_counter + 1 ;
1055- name
1056-
1053+ let tmp_export_vars = Atomic. make 0
10571054let generate_export_statement ctx expr ident =
10581055 if ctx.js_module_type == Es then
1059- let ident_contains_dots = ExtString.String. contains ident '.' in
1060- if (not ident_contains_dots) && expr <> ident then
1061- print ctx " export const %s = %s;" ident expr
1056+ let ident = mangle_export_name_es6 ctx ident in
1057+ let expr_contains_dots = ExtString.String. contains expr '.' in
1058+ if not expr_contains_dots then
1059+ if expr = ident then
1060+ print ctx " export { %s };" ident
1061+ else
1062+ print ctx " export { %s as %s };" expr ident
10621063 else begin
1063- let tmp_name = export_tmp_name() in
1064- let exported_name = if ident_contains_dots then mangle_export_name_es6 ctx ident else ident in
1065- print ctx " const %s = %s; export {%s as %s};" tmp_name expr tmp_name exported_name
1064+ let tmp_name = Printf. sprintf " $hx_export_tmp_%d" (Atomic. fetch_and_add tmp_export_vars 1 ) in
1065+ print ctx " const %s = %s; export { %s as %s };" tmp_name expr tmp_name ident
10661066 end
10671067 else
10681068 print ctx " $hx_exports%s = %s;" (path_to_brackets ident) expr;
0 commit comments