From 8cfbee95841a133bc08ccc0601df12bea1168d8c Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Mon, 1 Mar 2010 23:02:24 +0000 Subject: [PATCH] support exception/3 on undefined predicates. --- pl/boot.yap | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pl/boot.yap b/pl/boot.yap index 8ecc23e47..9765f1c52 100755 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -965,6 +965,25 @@ not(G) :- \+ '$execute'(G). '$execute0'(G, CurMod) ). +'$find_undefp_handler'(G,M,NG,user) :- + functor(G, Na, Ar), + user:exception(undefined_predicate,M:Na/Ar,Action), !, + '$exit_undefp', + ( + Action == fail + -> + NG = fail + ; + Action == retry + -> + NG = G + ; + Action = error + -> + '$unknown_error'(M:G) + ; + '$do_error'(type_error(atom, Action),M:G) + ). '$find_undefp_handler'(G,M,NG,user) :- \+ '$undefined'(unknown_predicate_handler(_,_,_), user), '$system_catch'(unknown_predicate_handler(G,M,NG), user, Error, '$leave_undefp'(Error)), !,