From: Mark Date: Tue, 5 Sep 2023 19:52:18 +0000 (-0600) Subject: remove error printing redundancy and inconsistent state resulting from file_load_clea... X-Git-Tag: remove~111 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=fa11d6bdd408f454ad5dc098d259be8d71a01bcc;p=scryer-prolog.git remove error printing redundancy and inconsistent state resulting from file_load_cleanup (#1995) --- diff --git a/src/loader.pl b/src/loader.pl index aab86f95..0ba61117 100644 --- a/src/loader.pl +++ b/src/loader.pl @@ -135,9 +135,15 @@ file_load_init(Stream, Evacuable) :- run_initialization_goals. file_load_cleanup(Evacuable, Error) :- + load_context(Module), + abolish(Module:'$initialization_goals'/1), unload_evacuable(Evacuable), - '$print_message_and_fail'(Error), - throw(Error). + ( clause('$toplevel':argv(_), _) -> + % let the toplevel call loader:write_error/1 + throw(Error) + ; '$print_message_and_fail'(Error) + ; throw(file_load_error) + ). file_load(Stream, Path, Evacuable) :- create_file_load_context(Stream, Path, Evacuable), @@ -505,7 +511,9 @@ consult(Item) :- use_module(Module) :- '$push_load_state_payload'(Evacuable), - use_module(Module, [], Evacuable). + catch('$call'(loader:use_module(Module, [], Evacuable)), + file_load_error, + '$call'(builtins:false)). use_module(Module, Exports) :- '$push_load_state_payload'(Evacuable), diff --git a/tests/scryer/issues.rs b/tests/scryer/issues.rs index 94aa37c7..821bbbf3 100644 --- a/tests/scryer/issues.rs +++ b/tests/scryer/issues.rs @@ -29,7 +29,7 @@ fn do_not_duplicate_path_components() { ['tests-pl/issue852-throw_e.pl'].\n\ halt.\n\ ", - " throw(e).\n false.\n throw(e).\n false.\n", + " throw(e).\n throw(e).\n", ); }