Skip to content

Commit 9c5f580

Browse files
committed
clean up api for external var dot
1 parent 9f20509 commit 9c5f580

File tree

9 files changed

+61
-16
lines changed

9 files changed

+61
-16
lines changed

jscomp/core/js_exp_make.ml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,15 @@ let runtime_var_vid x e1 : J.vident =
7979
let ml_var_dot ?comment ( id : Ident.t) e : J.expression =
8080
{expression_desc = Var (Qualified(id, Ml, Some e)); comment }
8181

82-
let external_var_dot ?comment (id : Ident.t) name fn : t =
83-
{expression_desc = Var (Qualified(id, External name, fn)); comment }
84-
8582
(**
8683
module as a value
8784
{[
8885
var http = require("http")
8986
]}
9087
*)
91-
let external_module_as_var ?comment (id : Ident.t) name : t =
92-
{expression_desc = Var (Qualified(id, External name, None)); comment }
88+
let external_var_dot ?comment ~external_name:name ?dot (id : Ident.t) : t =
89+
{expression_desc = Var (Qualified(id, External name, dot)); comment }
90+
9391

9492
let ml_var ?comment (id : Ident.t) : t =
9593
{expression_desc = Var (Qualified (id, Ml, None)); comment}

jscomp/core/js_exp_make.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ val runtime_var_vid : string -> string -> J.vident
7979

8080
val ml_var_dot : ?comment:string -> Ident.t -> string -> t
8181

82-
val external_var_dot : ?comment:string -> Ident.t -> string -> string option -> t
82+
val external_var_dot : ?comment:string -> external_name:string -> ?dot:string -> Ident.t -> t
8383

8484

8585

jscomp/core/lam_compile_env.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@ let get_package_path_from_cmj module_system ( id : Lam_module_ident.t) =
239239

240240
(* TODO: [env] is not hard dependency *)
241241

242-
let get_requried_modules env (extras : module_id list ) (hard_dependencies
242+
let get_requried_modules env
243+
(extras : module_id list )
244+
(hard_dependencies
243245
: _ Hash_set_poly.t) : module_id list =
244246

245247
let mem (x : Lam_module_ident.t) =

jscomp/core/lam_compile_external_call.ml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ module E = Js_exp_make
3232

3333
let handle_external
3434
({bundle ; bind_name} : Ast_external_attributes.external_module_name)
35+
: Ident.t * string
3536
=
3637
match bind_name with
3738
| None ->
@@ -42,7 +43,8 @@ let handle_external
4243
bundle
4344

4445
let handle_external_opt
45-
(module_name : Ast_external_attributes.external_module_name option) =
46+
(module_name : Ast_external_attributes.external_module_name option)
47+
: (Ident.t * string) option =
4648
match module_name with
4749
| Some module_name -> Some (handle_external module_name)
4850
| None -> None
@@ -196,12 +198,12 @@ let translate_ffi call_loc (ffi : Ast_external_attributes.ffi ) prim_name
196198
end
197199
| Js_module_as_var module_name ->
198200
let (id, name) = handle_external module_name in
199-
E.external_var_dot id name None
201+
E.external_var_dot id ~external_name:name
200202

201203
| Js_module_as_fn {external_module_name = module_name; splice} ->
202204
let fn =
203205
let (id, name) = handle_external module_name in
204-
E.external_var_dot id name None
206+
E.external_var_dot id ~external_name:name
205207
in
206208
let args, eff = assemble_args_splice call_loc ffi splice arg_types args in
207209
(* TODO: fix in rest calling convention *)
@@ -215,7 +217,7 @@ let translate_ffi call_loc (ffi : Ast_external_attributes.ffi ) prim_name
215217
| Js_module_as_class module_name ->
216218
let fn =
217219
let (id,name) = handle_external module_name in
218-
E.external_var_dot id name None in
220+
E.external_var_dot id ~external_name:name in
219221
let args,eff = assemble_args arg_types args in
220222
(* TODO: fix in rest calling convention *)
221223
add_eff eff
@@ -245,7 +247,7 @@ let translate_ffi call_loc (ffi : Ast_external_attributes.ffi ) prim_name
245247
let fn =
246248
match handle_external_opt module_name with
247249
| Some (id,name) ->
248-
E.external_var_dot id name (Some fn)
250+
E.external_var_dot id ~external_name:name ~dot:fn
249251

250252
| None ->
251253
(** TODO: check, no [@@bs.module],
@@ -279,7 +281,7 @@ let translate_ffi call_loc (ffi : Ast_external_attributes.ffi ) prim_name
279281
| "null", None -> E.nil
280282
| "undefined", None -> E.undefined
281283
| _, Some(id,mod_name)
282-
-> E.external_var_dot id mod_name (Some name)
284+
-> E.external_var_dot id ~external_name:mod_name ~dot:name
283285
| _, None ->
284286

285287
E.var (Ext_ident.create_js name)
@@ -337,7 +339,8 @@ let translate_ffi call_loc (ffi : Ast_external_attributes.ffi ) prim_name
337339
let translate loc cxt
338340
({prim_name ; prim_native_name}
339341
: Primitive.description) args =
340-
if Ast_external_attributes.is_bs_external_prefix prim_native_name then
342+
if Ast_external_attributes.is_bs_external_prefix prim_native_name
343+
then
341344
begin
342345
match Ast_external_attributes.unsafe_from_string prim_native_name with
343346
| Normal ->

jscomp/core/lam_compile_group.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ let lambda_as_module
367367
begin
368368
Js_config.set_current_file filename ;
369369
#if BS_DEBUG then
370-
Js_config.set_debug_file "gpr_977_test.ml";
370+
Js_config.set_debug_file "gpr_1060_test.ml";
371371
#end
372372
let lambda_output = compile ~filename output_prefix env sigs lam in
373373
let (//) = Filename.concat in

jscomp/test/.depend

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ global_exception_regression_test.cmj : mt.cmj
178178
global_module_alias_test.cmj : mt.cmj ../stdlib/list.cmj
179179
google_closure_test.cmj : test_google_closure.cmj mt.cmj
180180
gpr496_test.cmj : ../stdlib/pervasives.cmj mt.cmj ../runtime/js.cmj
181+
gpr_1060_test.cmj :
181182
gpr_1063_test.cmj :
182183
gpr_405_test.cmj : ../stdlib/hashtbl.cmj gpr_405_test.cmi
183184
gpr_441.cmj :

jscomp/test/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ OTHERS := literals a test_ari test_export2 test_internalOO test_obj_simple_ffi t
7878
flattern_order_test\
7979
minimal_test\
8080
gpr_1063_test\
81-
gpr_977_test
81+
gpr_977_test\
82+
gpr_1060_test
8283

8384

8485

jscomp/test/gpr_1060_test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use strict';
2+
3+
var Foo$dotreact = require("foo.react");
4+
var React = require("react");
5+
var A = require("react");
6+
var Foo = require("foo.react");
7+
8+
var v = A;
9+
10+
var h = React.bool();
11+
12+
var c = Foo;
13+
14+
var d = Foo$dotreact.bar();
15+
16+
exports.v = v;
17+
exports.h = h;
18+
exports.c = c;
19+
exports.d = d;
20+
/* v Not a pure module */

jscomp/test/gpr_1060_test.ml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
type u
3+
4+
external a : u = "react" [@@bs.module]
5+
6+
external b : unit -> int = "bool" [@@bs.module "react"]
7+
8+
let v = a
9+
let h = b ()
10+
11+
type bla
12+
13+
14+
external foo : bla = "foo.react" [@@bs.module]
15+
16+
external bar : unit -> bla = "bar" [@@bs.val] [@@bs.module "foo.react"]
17+
18+
let c = foo
19+
20+
let d = bar ()

0 commit comments

Comments
 (0)