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
This commit is contained in:
J.J. Tolton
2025-11-09 12:16:02 -05:00
parent 95abc4017e
commit e7c288f8f0
3 changed files with 11 additions and 14 deletions

View File

@@ -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(_, _))
)).

View File

@@ -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: '),