Skip to content

Commit 80b9f47

Browse files
committed
Compiler: refactoring
1 parent eb1d001 commit 80b9f47

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

compiler/lib/driver.ml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ let link ~export_runtime ~standalone ~linkall (js : Javascript.statement_list) :
295295
if (not export_runtime) && not standalone
296296
then { runtime_code = js; always_required_codes = [] }
297297
else
298+
let check_missing = standalone in
298299
let t = Timer.make () in
299300
if times () then Format.eprintf "Start Linking...@.";
300301
let traverse = new Js_traverse.free in
@@ -335,12 +336,15 @@ let link ~export_runtime ~standalone ~linkall (js : Javascript.statement_list) :
335336
in
336337
let linkinfos = Linker.init () in
337338
let linkinfos, js =
338-
let linkinfos, missing = Linker.resolve_deps ~standalone linkinfos used in
339+
let linkinfos, missing = Linker.resolve_deps ~check_missing linkinfos used in
339340
(* gen_missing may use caml_failwith *)
340341
if (not (StringSet.is_empty missing)) && Config.Flag.genprim ()
341342
then
342343
let linkinfos, missing2 =
343-
Linker.resolve_deps linkinfos (StringSet.singleton "caml_failwith")
344+
Linker.resolve_deps
345+
~check_missing
346+
linkinfos
347+
(StringSet.singleton "caml_failwith")
344348
in
345349
let missing = StringSet.union missing missing2 in
346350
linkinfos, gen_missing js missing
@@ -384,7 +388,7 @@ let link ~export_runtime ~standalone ~linkall (js : Javascript.statement_list) :
384388
else js
385389
in
386390
let missing = Linker.missing linkinfos in
387-
let output = Linker.link ~standalone js linkinfos in
391+
let output = Linker.link ~check_missing js linkinfos in
388392
if not (List.is_empty missing)
389393
then
390394
{ output with

compiler/lib/linker.ml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -626,11 +626,11 @@ let init () =
626626
; missing = StringSet.empty
627627
}
628628

629-
let check_missing state =
629+
let do_check_missing state =
630630
if not (StringSet.is_empty state.missing)
631631
then error "missing dependency '%s'@." (StringSet.choose state.missing)
632632

633-
let resolve_deps ?(standalone = true) visited_rev used =
633+
let resolve_deps ?(check_missing = true) visited_rev used =
634634
(* link the special files *)
635635
let missing, visited_rev =
636636
StringSet.fold
@@ -641,10 +641,10 @@ let resolve_deps ?(standalone = true) visited_rev used =
641641
used
642642
(StringSet.empty, visited_rev)
643643
in
644-
if standalone then check_missing visited_rev;
644+
if check_missing then do_check_missing visited_rev;
645645
visited_rev, missing
646646

647-
let link ?(standalone = true) program (state : state) =
647+
let link ?(check_missing = true) program (state : state) =
648648
let always, always_required =
649649
List.partition
650650
~f:(function
@@ -661,7 +661,7 @@ let link ?(standalone = true) program (state : state) =
661661
in
662662
{ state with codes = (Ok always.program, false) :: state.codes })
663663
in
664-
if standalone then check_missing state;
664+
if check_missing then do_check_missing state;
665665
let codes =
666666
List.map state.codes ~f:(fun (x, has_macro) ->
667667
let c = unpack x in

compiler/lib/linker.mli

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ val list_all : unit -> StringSet.t
5959

6060
val init : unit -> state
6161

62-
val resolve_deps : ?standalone:bool -> state -> StringSet.t -> state * StringSet.t
62+
val resolve_deps : ?check_missing:bool -> state -> StringSet.t -> state * StringSet.t
6363

64-
val link : ?standalone:bool -> Javascript.program -> state -> output
64+
val link : ?check_missing:bool -> Javascript.program -> state -> output
6565

6666
val all : state -> string list
6767

0 commit comments

Comments
 (0)