Skip to content

finally prepare -bs-suffix to define .bs.js suffix (default to .js suffix to make it backward compatible in a short period) #2112

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 12, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/docson/build-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,13 @@
"type": "string"
},
"description": "(Not needed usually) arguments to pass to `refmt` above. Default: `[\"--print\", \"binary\"]`."
},
"suffix" : {
"enum" : [
".js",
".bs.js"
],
"description": "suffix of generated js files, default to [.js] "
}
},
"additionalProperties": false,
Expand Down
22 changes: 11 additions & 11 deletions jscomp/all.depend
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,7 @@ ext/ext_filename.cmx : ext/literals.cmx ext/ext_string.cmx \
ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_filename.cmi
ext/ext_modulename.cmx : ext/ext_string.cmx ext/ext_path.cmx \
ext/ext_modulename.cmi
ext/ext_namespace.cmx : ext/literals.cmx ext/ext_string.cmx \
ext/ext_namespace.cmi
ext/ext_namespace.cmx : ext/ext_string.cmx ext/ext_namespace.cmi
ext/literals.cmi :
ext/ext_util.cmi :
ext/ext_int.cmi :
Expand Down Expand Up @@ -275,7 +274,7 @@ depends/ast_extract.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \
depends/binary_ast.cmx : common/ml_binary.cmx depends/ast_extract.cmx \
depends/binary_ast.cmi
core/config_util.cmi :
core/js_packages_info.cmi : core/lam_module_ident.cmi
core/js_packages_info.cmi : core/lam_module_ident.cmi ext/ext_namespace.cmi
core/js_packages_state.cmi : core/js_packages_info.cmi
core/ocaml_types.cmi :
core/bs_conditional_initial.cmi :
Expand All @@ -292,7 +291,7 @@ core/lam_inline_util.cmi : core/lam.cmi
core/lam_analysis.cmi : core/lam.cmi
core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi
core/js_cmj_format.cmi : ext/string_map.cmi core/lam_arity.cmi core/lam.cmi \
core/js_packages_info.cmi
core/js_packages_info.cmi ext/ext_namespace.cmi
core/js_cmj_load.cmi : core/js_cmj_format.cmi
core/js_fun_env.cmi : ext/ident_set.cmi
core/js_call_info.cmi :
Expand Down Expand Up @@ -416,7 +415,7 @@ core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \
ext/ident_map.cmx ext/ext_list.cmx core/lam_closure.cmi
core/js_cmj_format.cmx : ext/string_map.cmx core/lam_arity.cmx core/lam.cmx \
core/js_packages_info.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \
core/js_cmj_format.cmi
ext/ext_namespace.cmx core/js_cmj_format.cmi
core/js_cmj_load.cmx : core/js_cmj_format.cmx core/config_util.cmx \
depends/bs_exception.cmx core/js_cmj_load.cmi
core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi
Expand Down Expand Up @@ -753,7 +752,7 @@ ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \
ext/int_vec.cmx ext/ext_list.cmx ext/ext_json.cmx
ounit_tests/ounit_data_random.cmx :
ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \
ounit/oUnit.cmx ext/ext_string.cmx ext/ext_namespace.cmx
ounit/oUnit.cmx ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx
ounit_tests/ounit_utf8_test.cmx : ounit/oUnit.cmx ext/ext_utf8.cmx
ounit_tests/ounit_js_regex_checker_tests.cmx : ounit/oUnit.cmx \
ext/ext_js_regex.cmx
Expand Down Expand Up @@ -872,9 +871,10 @@ bsb/bsb_ninja_regen.cmx : ext/literals.cmx ext/ext_path.cmx ext/ext_list.cmx \
bsb/bsb_ninja_util.cmx : ext/ext_string.cmx bsb/bsb_rule.cmx \
bsb/bsb_ninja_util.cmi
bsb/bsb_package_specs.cmx : ext/string_map.cmx ext/literals.cmx \
ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \
ext/ext_json_types.cmx ext/ext_json.cmx bsb/bsb_exception.cmx \
bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx bsb/bsb_package_specs.cmi
common/js_config.cmx ext/ext_string.cmx ext/ext_path.cmx \
ext/ext_namespace.cmx ext/ext_json_types.cmx ext/ext_json.cmx \
bsb/bsb_exception.cmx bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx \
bsb/bsb_package_specs.cmi
bsb/bsb_parse_sources.cmx : ext/string_vec.cmx ext/string_set.cmx \
ext/string_map.cmx ext/string_hashtbl.cmx ext/ext_string.cmx \
ext/ext_path.cmx ext/ext_list.cmx ext/ext_json_types.cmx ext/ext_json.cmx \
Expand Down Expand Up @@ -955,7 +955,7 @@ bsb/bsb_world.cmi : bsb/bsb_config_types.cmx
jscmj_main.cmx : ext/literals.cmx core/js_cmj_format.cmx ext/ext_string.cmx \
ext/ext_pp.cmx ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_array.cmx \
jscmj_main.cmi
jsgen_main.cmx : ext/literals.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \
ext/ext_list.cmx ext/ext_array.cmx
jsgen_main.cmx : ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_list.cmx \
ext/ext_array.cmx
rollup_test.cmx :
jscmj_main.cmi :
124 changes: 0 additions & 124 deletions jscomp/bb_require.js

This file was deleted.

102 changes: 71 additions & 31 deletions jscomp/bin/all_ounit_tests.ml
Original file line number Diff line number Diff line change
Expand Up @@ -4894,7 +4894,7 @@ val suffix_rei : string
val suffix_d : string
val suffix_mlastd : string
val suffix_mliastd : string
val suffix_js : string

val suffix_mli : string
val suffix_cmt : string
val suffix_cmti : string
Expand Down Expand Up @@ -5029,7 +5029,7 @@ let suffix_mliast_simple = ".mliast_simple"
let suffix_d = ".d"
let suffix_mlastd = ".mlast.d"
let suffix_mliastd = ".mliast.d"
let suffix_js = ".js"


let commonjs = "commonjs"
let amdjs = "amdjs"
Expand Down Expand Up @@ -11521,7 +11521,9 @@ val chop_extension : ?loc:string -> string -> string

val chop_extension_if_any : string -> string


val chop_all_extensions_if_any :
string -> string

(**
{[
get_extension "a.txt" = ".txt"
Expand Down Expand Up @@ -11690,6 +11692,11 @@ let chop_extension ?(loc="") name =
let chop_extension_if_any fname =
try Filename.chop_extension fname with Invalid_argument _ -> fname

let rec chop_all_extensions_if_any fname =
match Filename.chop_extension fname with
| x -> chop_all_extensions_if_any x
| exception _ -> fname

let get_extension x =
let pos = Ext_string.rindex_neg x '.' in
if pos < 0 then ""
Expand Down Expand Up @@ -13768,25 +13775,32 @@ module Ext_namespace : sig
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)

(** [make ~ns "a" ]
A typical example would return "a-Ns"
Note the namespace comes from the output of [namespace_of_package_name]
A typical example would return "a-Ns"
Note the namespace comes from the output of [namespace_of_package_name]
*)
val make : ns:string -> string -> string



(* Note we have to output uncapitalized file Name,
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)`
relevant issues: #1609, #913

#1933 when removing ns suffix, don't pass the bound
of basename
*)
val js_name_of_basename : string -> string
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)`
relevant issues: #1609, #913

(** [js_name_of_modulename ~little A-Ns]
#1933 when removing ns suffix, don't pass the bound
of basename
*)
val js_name_of_modulename : little:bool -> string -> string
val js_name_of_basename :
bool ->
string -> string

type file_kind =
| Upper_js
| Upper_bs
| Little_js
| Little_bs
(** [js_name_of_modulename ~little A-Ns]
*)
val js_name_of_modulename : file_kind -> string -> string

(* TODO handle cases like
'@angular/core'
Expand Down Expand Up @@ -13852,15 +13866,29 @@ let remove_ns_suffix name =
if i < 0 then name
else String.sub name 0 i


let js_name_of_basename s =
remove_ns_suffix s ^ Literals.suffix_js

let js_name_of_modulename ~little s =
if little then
remove_ns_suffix (String.uncapitalize s) ^ Literals.suffix_js
else
remove_ns_suffix s ^ Literals.suffix_js
type file_kind =
| Upper_js
| Upper_bs
| Little_js
| Little_bs

let suffix_js = ".js"
let bs_suffix_js = ".bs.js"

let js_name_of_basename bs_suffix s =
remove_ns_suffix s ^
(if bs_suffix then bs_suffix_js else suffix_js )

let js_name_of_modulename little s =
match little with
| Little_js ->
remove_ns_suffix (String.uncapitalize s) ^ suffix_js
| Little_bs ->
remove_ns_suffix (String.uncapitalize s) ^ bs_suffix_js
| Upper_js ->
remove_ns_suffix s ^ suffix_js
| Upper_bs ->
remove_ns_suffix s ^ bs_suffix_js

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

let (=~) = OUnit.assert_equal


let printer_string = fun x -> x


let suites =
Expand Down Expand Up @@ -14227,18 +14255,23 @@ let suites =
=~ "Reason"
end;
__LOC__ >:: begin fun _ ->
Ext_namespace.js_name_of_basename "a-b"
Ext_namespace.js_name_of_basename false "a-b"
=~ "a.js";
Ext_namespace.js_name_of_basename "a-"
Ext_namespace.js_name_of_basename false "a-"
=~ "a.js";
Ext_namespace.js_name_of_basename "a--"
Ext_namespace.js_name_of_basename false "a--"
=~ "a-.js";
Ext_namespace.js_name_of_basename "AA-b"
Ext_namespace.js_name_of_basename false "AA-b"
=~ "AA.js";
Ext_namespace.js_name_of_modulename ~little:true "AA-b"
Ext_namespace.js_name_of_modulename
Little_js "AA-b"
=~ "aA.js";
Ext_namespace.js_name_of_modulename ~little:false "AA-b"
Ext_namespace.js_name_of_modulename
Upper_js "AA-b"
=~ "AA.js";
Ext_namespace.js_name_of_modulename
Upper_bs "AA-b"
=~ "AA.bs.js";
end;

__LOC__ >:: begin fun _ ->
Expand All @@ -14252,7 +14285,14 @@ let suites =
let v = "bc" in
f v =~ "Bc";
v =~ "bc"
end
end;
__LOC__ >:: begin fun _ ->
let (=~) = OUnit.assert_equal ~printer:printer_string in
Ext_path.chop_all_extensions_if_any "a.bs.js" =~ "a" ;
Ext_path.chop_all_extensions_if_any "a.js" =~ "a";
Ext_path.chop_all_extensions_if_any "a" =~ "a";
Ext_path.chop_all_extensions_if_any "a.x.bs.js" =~ "a"
end;
]

end
Expand Down
Loading