From: Mark Thom Date: Sun, 1 Aug 2021 15:25:55 +0000 (-0600) Subject: run user-level and module-level initialization goals from loader.pl (#1012) X-Git-Tag: v0.9.0~50 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=9a66a626f7147bb63e0305515d1be03b0f3cacdc;p=scryer-prolog.git run user-level and module-level initialization goals from loader.pl (#1012) --- diff --git a/Cargo.lock b/Cargo.lock index e90a93ec..7e94a23e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,7 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 - [[package]] name = "arrayvec" version = "0.5.2" diff --git a/src/loader.pl b/src/loader.pl index f231ffd1..0b725a40 100644 --- a/src/loader.pl +++ b/src/loader.pl @@ -87,8 +87,7 @@ unload_evacuable(Evacuable) :- '$pop_load_state_payload'(Evacuable), '$pop_load_context'. -run_initialization_goals :- - prolog_load_context(module, Module), +run_initialization_goals(Module) :- ( predicate_property(Module:'$initialization_goals'(_), dynamic) -> findall(Module:Goal, '$call'(builtins:retract(Module:'$initialization_goals'(Goal))), Goals), abolish(Module:'$initialization_goals'/1), @@ -99,6 +98,14 @@ run_initialization_goals :- ; true ). +run_initialization_goals :- + prolog_load_context(module, Module), + run_initialization_goals(user), + ( Module \== user -> + run_initialization_goals(Module) + ; true + ). + file_load(Stream, Path) :- file_load(Stream, Path, _), false. %% Clear the heap.