From e7c288f8f0e5f8007d4ee95cb7b57fd8f8b83732 Mon Sep 17 00:00:00 2001 From: "J.J. Tolton" Date: Sun, 9 Nov 2025 12:16:02 -0500 Subject: [PATCH] Move g_caused_exception/2 dynamic directive to toplevel.pl - Add dynamic directive in toplevel.pl with other module-level directives - Update test files to reference it as '':g_caused_exception/2 - Remove redundant dynamic directives from test files - All tests passing --- src/tests/custom_toplevel.pl | 16 +++++++--------- src/toplevel.pl | 3 ++- .../scryer/cli/fixtures/toplevel_test_helper.pl | 6 ++---- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/tests/custom_toplevel.pl b/src/tests/custom_toplevel.pl index 83001b55..7e15fbc7 100644 --- a/src/tests/custom_toplevel.pl +++ b/src/tests/custom_toplevel.pl @@ -15,10 +15,8 @@ test_predicate :- format("Test predicate executed~n", []). % Test predicates for g_caused_exception/2 -:- dynamic(g_caused_exception/2). - check_for_exception :- - ( g_caused_exception(_Goal, Exception) -> + ( '$toplevel':g_caused_exception(_Goal, Exception) -> format("Exception occurred: ~w~n", [Exception]), halt(1) ; format("No exception~n", []), @@ -31,15 +29,15 @@ test("custom toplevel functionality is tested via CLI tests", ( )). test("g_caused_exception/2 is not asserted when no exception occurs", ( - retractall(g_caused_exception(_, _)), - \+ g_caused_exception(_, _) + retractall('$toplevel':g_caused_exception(_, _)), + \+ '$toplevel':g_caused_exception(_, _) )). test("g_caused_exception/2 can be checked from custom toplevel", ( % This tests the predicate structure; actual exception handling % is tested via CLI tests since it requires -g and -t flags - retractall(g_caused_exception(_, _)), - asserta(g_caused_exception(test_goal, test_error)), - g_caused_exception(test_goal, test_error), - retractall(g_caused_exception(_, _)) + retractall('$toplevel':g_caused_exception(_, _)), + asserta('$toplevel':g_caused_exception(test_goal, test_error)), + '$toplevel':g_caused_exception(test_goal, test_error), + retractall('$toplevel':g_caused_exception(_, _)) )). diff --git a/src/toplevel.pl b/src/toplevel.pl index 3b49ce04..5b27832b 100644 --- a/src/toplevel.pl +++ b/src/toplevel.pl @@ -17,6 +17,7 @@ :- dynamic(disabled_init_file/0). :- dynamic(started/0). :- dynamic(custom_toplevel/1). +:- dynamic(g_caused_exception/2). load_scryerrc :- ( '$home_directory'(HomeDir) -> @@ -180,7 +181,7 @@ run_goals([g(Gs0)|Goals]) :- !, ( write_term(Goal, [variable_names(VNs),double_quotes(DQ)]), write(' causes: '), write_term(Exception, [double_quotes(DQ)]), nl, - asserta(user:g_caused_exception(Goal, Exception)) + asserta(g_caused_exception(Goal, Exception)) ) ) -> true ; write('% Warning: initialization failed for: '), diff --git a/tests/scryer/cli/fixtures/toplevel_test_helper.pl b/tests/scryer/cli/fixtures/toplevel_test_helper.pl index a4e4106b..3ded55dc 100644 --- a/tests/scryer/cli/fixtures/toplevel_test_helper.pl +++ b/tests/scryer/cli/fixtures/toplevel_test_helper.pl @@ -29,10 +29,8 @@ helper_predicate :- format("Helper predicate works~n", []). % g_caused_exception/2 testing predicates -:- dynamic(g_caused_exception/2). - check_exception_halt_1 :- - ( g_caused_exception(Goal, Exception) -> + ( '$toplevel':g_caused_exception(Goal, Exception) -> format("EXCEPTION_CAUGHT~n", []), format("Goal: ~w~n", [Goal]), format("Exception: ~w~n", [Exception]), @@ -42,7 +40,7 @@ check_exception_halt_1 :- ). check_exception_halt_0 :- - ( g_caused_exception(_, _) -> + ( '$toplevel':g_caused_exception(_, _) -> format("UNEXPECTED_EXCEPTION~n", []), halt(1) ; format("SUCCESS_NO_EXCEPTION~n", []), -- 2.54.0