Skip to content

Commit a16d8fa

Browse files
authored
Merge pull request #2112 from BuckleScript/bs_js
finally prepare -bs-suffix to define .bs.js suffix (default to .js suffix to make it backward compatible in a short period)
2 parents fe821ec + 0365807 commit a16d8fa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1151
-807
lines changed

docs/docson/build-schema.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,13 @@
426426
"type": "string"
427427
},
428428
"description": "(Not needed usually) arguments to pass to `refmt` above. Default: `[\"--print\", \"binary\"]`."
429+
},
430+
"suffix" : {
431+
"enum" : [
432+
".js",
433+
".bs.js"
434+
],
435+
"description": "suffix of generated js files, default to [.js] "
429436
}
430437
},
431438
"additionalProperties": false,

jscomp/all.depend

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,7 @@ ext/ext_filename.cmx : ext/literals.cmx ext/ext_string.cmx \
9696
ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_filename.cmi
9797
ext/ext_modulename.cmx : ext/ext_string.cmx ext/ext_path.cmx \
9898
ext/ext_modulename.cmi
99-
ext/ext_namespace.cmx : ext/literals.cmx ext/ext_string.cmx \
100-
ext/ext_namespace.cmi
99+
ext/ext_namespace.cmx : ext/ext_string.cmx ext/ext_namespace.cmi
101100
ext/literals.cmi :
102101
ext/ext_util.cmi :
103102
ext/ext_int.cmi :
@@ -275,7 +274,7 @@ depends/ast_extract.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \
275274
depends/binary_ast.cmx : common/ml_binary.cmx depends/ast_extract.cmx \
276275
depends/binary_ast.cmi
277276
core/config_util.cmi :
278-
core/js_packages_info.cmi : core/lam_module_ident.cmi
277+
core/js_packages_info.cmi : core/lam_module_ident.cmi ext/ext_namespace.cmi
279278
core/js_packages_state.cmi : core/js_packages_info.cmi
280279
core/ocaml_types.cmi :
281280
core/bs_conditional_initial.cmi :
@@ -292,7 +291,7 @@ core/lam_inline_util.cmi : core/lam.cmi
292291
core/lam_analysis.cmi : core/lam.cmi
293292
core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi
294293
core/js_cmj_format.cmi : ext/string_map.cmi core/lam_arity.cmi core/lam.cmi \
295-
core/js_packages_info.cmi
294+
core/js_packages_info.cmi ext/ext_namespace.cmi
296295
core/js_cmj_load.cmi : core/js_cmj_format.cmi
297296
core/js_fun_env.cmi : ext/ident_set.cmi
298297
core/js_call_info.cmi :
@@ -416,7 +415,7 @@ core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \
416415
ext/ident_map.cmx ext/ext_list.cmx core/lam_closure.cmi
417416
core/js_cmj_format.cmx : ext/string_map.cmx core/lam_arity.cmx core/lam.cmx \
418417
core/js_packages_info.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \
419-
core/js_cmj_format.cmi
418+
ext/ext_namespace.cmx core/js_cmj_format.cmi
420419
core/js_cmj_load.cmx : core/js_cmj_format.cmx core/config_util.cmx \
421420
depends/bs_exception.cmx core/js_cmj_load.cmi
422421
core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi
@@ -753,7 +752,7 @@ ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \
753752
ext/int_vec.cmx ext/ext_list.cmx ext/ext_json.cmx
754753
ounit_tests/ounit_data_random.cmx :
755754
ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \
756-
ounit/oUnit.cmx ext/ext_string.cmx ext/ext_namespace.cmx
755+
ounit/oUnit.cmx ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx
757756
ounit_tests/ounit_utf8_test.cmx : ounit/oUnit.cmx ext/ext_utf8.cmx
758757
ounit_tests/ounit_js_regex_checker_tests.cmx : ounit/oUnit.cmx \
759758
ext/ext_js_regex.cmx
@@ -872,9 +871,10 @@ bsb/bsb_ninja_regen.cmx : ext/literals.cmx ext/ext_path.cmx ext/ext_list.cmx \
872871
bsb/bsb_ninja_util.cmx : ext/ext_string.cmx bsb/bsb_rule.cmx \
873872
bsb/bsb_ninja_util.cmi
874873
bsb/bsb_package_specs.cmx : ext/string_map.cmx ext/literals.cmx \
875-
ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \
876-
ext/ext_json_types.cmx ext/ext_json.cmx bsb/bsb_exception.cmx \
877-
bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx bsb/bsb_package_specs.cmi
874+
common/js_config.cmx ext/ext_string.cmx ext/ext_path.cmx \
875+
ext/ext_namespace.cmx ext/ext_json_types.cmx ext/ext_json.cmx \
876+
bsb/bsb_exception.cmx bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx \
877+
bsb/bsb_package_specs.cmi
878878
bsb/bsb_parse_sources.cmx : ext/string_vec.cmx ext/string_set.cmx \
879879
ext/string_map.cmx ext/string_hashtbl.cmx ext/ext_string.cmx \
880880
ext/ext_path.cmx ext/ext_list.cmx ext/ext_json_types.cmx ext/ext_json.cmx \
@@ -955,7 +955,7 @@ bsb/bsb_world.cmi : bsb/bsb_config_types.cmx
955955
jscmj_main.cmx : ext/literals.cmx core/js_cmj_format.cmx ext/ext_string.cmx \
956956
ext/ext_pp.cmx ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_array.cmx \
957957
jscmj_main.cmi
958-
jsgen_main.cmx : ext/literals.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \
959-
ext/ext_list.cmx ext/ext_array.cmx
958+
jsgen_main.cmx : ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_list.cmx \
959+
ext/ext_array.cmx
960960
rollup_test.cmx :
961961
jscmj_main.cmi :

jscomp/bb_require.js

Lines changed: 0 additions & 124 deletions
This file was deleted.

jscomp/bin/all_ounit_tests.ml

Lines changed: 71 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4894,7 +4894,7 @@ val suffix_rei : string
48944894
val suffix_d : string
48954895
val suffix_mlastd : string
48964896
val suffix_mliastd : string
4897-
val suffix_js : string
4897+
48984898
val suffix_mli : string
48994899
val suffix_cmt : string
49004900
val suffix_cmti : string
@@ -5029,7 +5029,7 @@ let suffix_mliast_simple = ".mliast_simple"
50295029
let suffix_d = ".d"
50305030
let suffix_mlastd = ".mlast.d"
50315031
let suffix_mliastd = ".mliast.d"
5032-
let suffix_js = ".js"
5032+
50335033

50345034
let commonjs = "commonjs"
50355035
let amdjs = "amdjs"
@@ -11521,7 +11521,9 @@ val chop_extension : ?loc:string -> string -> string
1152111521

1152211522
val chop_extension_if_any : string -> string
1152311523

11524-
11524+
val chop_all_extensions_if_any :
11525+
string -> string
11526+
1152511527
(**
1152611528
{[
1152711529
get_extension "a.txt" = ".txt"
@@ -11690,6 +11692,11 @@ let chop_extension ?(loc="") name =
1169011692
let chop_extension_if_any fname =
1169111693
try Filename.chop_extension fname with Invalid_argument _ -> fname
1169211694

11695+
let rec chop_all_extensions_if_any fname =
11696+
match Filename.chop_extension fname with
11697+
| x -> chop_all_extensions_if_any x
11698+
| exception _ -> fname
11699+
1169311700
let get_extension x =
1169411701
let pos = Ext_string.rindex_neg x '.' in
1169511702
if pos < 0 then ""
@@ -13768,25 +13775,32 @@ module Ext_namespace : sig
1376813775
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
1376913776

1377013777
(** [make ~ns "a" ]
13771-
A typical example would return "a-Ns"
13772-
Note the namespace comes from the output of [namespace_of_package_name]
13778+
A typical example would return "a-Ns"
13779+
Note the namespace comes from the output of [namespace_of_package_name]
1377313780
*)
1377413781
val make : ns:string -> string -> string
1377513782

1377613783

1377713784

1377813785
(* Note we have to output uncapitalized file Name,
13779-
or at least be consistent, since by reading cmi file on Case insensitive OS, we don't really know it is `list.cmi` or `List.cmi`, so that `require (./list.js)` or `require(./List.js)`
13780-
relevant issues: #1609, #913
13781-
13782-
#1933 when removing ns suffix, don't pass the bound
13783-
of basename
13784-
*)
13785-
val js_name_of_basename : string -> string
13786+
or at least be consistent, since by reading cmi file on Case insensitive OS, we don't really know it is `list.cmi` or `List.cmi`, so that `require (./list.js)` or `require(./List.js)`
13787+
relevant issues: #1609, #913
1378613788

13787-
(** [js_name_of_modulename ~little A-Ns]
13789+
#1933 when removing ns suffix, don't pass the bound
13790+
of basename
1378813791
*)
13789-
val js_name_of_modulename : little:bool -> string -> string
13792+
val js_name_of_basename :
13793+
bool ->
13794+
string -> string
13795+
13796+
type file_kind =
13797+
| Upper_js
13798+
| Upper_bs
13799+
| Little_js
13800+
| Little_bs
13801+
(** [js_name_of_modulename ~little A-Ns]
13802+
*)
13803+
val js_name_of_modulename : file_kind -> string -> string
1379013804

1379113805
(* TODO handle cases like
1379213806
'@angular/core'
@@ -13852,15 +13866,29 @@ let remove_ns_suffix name =
1385213866
if i < 0 then name
1385313867
else String.sub name 0 i
1385413868

13855-
13856-
let js_name_of_basename s =
13857-
remove_ns_suffix s ^ Literals.suffix_js
13858-
13859-
let js_name_of_modulename ~little s =
13860-
if little then
13861-
remove_ns_suffix (String.uncapitalize s) ^ Literals.suffix_js
13862-
else
13863-
remove_ns_suffix s ^ Literals.suffix_js
13869+
type file_kind =
13870+
| Upper_js
13871+
| Upper_bs
13872+
| Little_js
13873+
| Little_bs
13874+
13875+
let suffix_js = ".js"
13876+
let bs_suffix_js = ".bs.js"
13877+
13878+
let js_name_of_basename bs_suffix s =
13879+
remove_ns_suffix s ^
13880+
(if bs_suffix then bs_suffix_js else suffix_js )
13881+
13882+
let js_name_of_modulename little s =
13883+
match little with
13884+
| Little_js ->
13885+
remove_ns_suffix (String.uncapitalize s) ^ suffix_js
13886+
| Little_bs ->
13887+
remove_ns_suffix (String.uncapitalize s) ^ bs_suffix_js
13888+
| Upper_js ->
13889+
remove_ns_suffix s ^ suffix_js
13890+
| Upper_bs ->
13891+
remove_ns_suffix s ^ bs_suffix_js
1386413892

1386513893
(* https://docs.npmjs.com/files/package.json
1386613894
Some rules:
@@ -13931,7 +13959,7 @@ let ((>::),
1393113959

1393213960
let (=~) = OUnit.assert_equal
1393313961

13934-
13962+
let printer_string = fun x -> x
1393513963

1393613964

1393713965
let suites =
@@ -14227,18 +14255,23 @@ let suites =
1422714255
=~ "Reason"
1422814256
end;
1422914257
__LOC__ >:: begin fun _ ->
14230-
Ext_namespace.js_name_of_basename "a-b"
14258+
Ext_namespace.js_name_of_basename false "a-b"
1423114259
=~ "a.js";
14232-
Ext_namespace.js_name_of_basename "a-"
14260+
Ext_namespace.js_name_of_basename false "a-"
1423314261
=~ "a.js";
14234-
Ext_namespace.js_name_of_basename "a--"
14262+
Ext_namespace.js_name_of_basename false "a--"
1423514263
=~ "a-.js";
14236-
Ext_namespace.js_name_of_basename "AA-b"
14264+
Ext_namespace.js_name_of_basename false "AA-b"
1423714265
=~ "AA.js";
14238-
Ext_namespace.js_name_of_modulename ~little:true "AA-b"
14266+
Ext_namespace.js_name_of_modulename
14267+
Little_js "AA-b"
1423914268
=~ "aA.js";
14240-
Ext_namespace.js_name_of_modulename ~little:false "AA-b"
14269+
Ext_namespace.js_name_of_modulename
14270+
Upper_js "AA-b"
1424114271
=~ "AA.js";
14272+
Ext_namespace.js_name_of_modulename
14273+
Upper_bs "AA-b"
14274+
=~ "AA.bs.js";
1424214275
end;
1424314276

1424414277
__LOC__ >:: begin fun _ ->
@@ -14252,7 +14285,14 @@ let suites =
1425214285
let v = "bc" in
1425314286
f v =~ "Bc";
1425414287
v =~ "bc"
14255-
end
14288+
end;
14289+
__LOC__ >:: begin fun _ ->
14290+
let (=~) = OUnit.assert_equal ~printer:printer_string in
14291+
Ext_path.chop_all_extensions_if_any "a.bs.js" =~ "a" ;
14292+
Ext_path.chop_all_extensions_if_any "a.js" =~ "a";
14293+
Ext_path.chop_all_extensions_if_any "a" =~ "a";
14294+
Ext_path.chop_all_extensions_if_any "a.x.bs.js" =~ "a"
14295+
end;
1425614296
]
1425714297

1425814298
end

0 commit comments

Comments
 (0)