From 0e263dd7536dff8a98ae6f94b62bbd45051c0b2a Mon Sep 17 00:00:00 2001 From: Paulo Moura Date: Sun, 16 May 2021 23:49:21 +0100 Subject: [PATCH] Fix current_predicate/1 predicate error checking --- src/lib/builtins.pl | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib/builtins.pl b/src/lib/builtins.pl index 334deb66..616a2b0d 100644 --- a/src/lib/builtins.pl +++ b/src/lib/builtins.pl @@ -1083,8 +1083,17 @@ abolish(Pred) :- current_predicate(Pred) :- - ( nonvar(Pred), Pred \= _ / _ - -> throw(error(type_error(predicate_indicator, Pred), current_predicate/1)) + ( var(Pred) -> + '$get_next_db_ref'(Ref, _), + '$iterate_db_refs'(Ref, Pred) + ; Pred \= _/_ -> + throw(error(type_error(predicate_indicator, Pred), current_predicate/1)) + ; Pred = Name/Arity, + ( nonvar(Name), \+ atom(Name) + ; nonvar(Arity), \+ integer(Arity) + ; integer(Arity), Arity < 0 + ) -> + throw(error(type_error(predicate_indicator, Pred), current_predicate/1)) ; '$get_next_db_ref'(Ref, _), '$iterate_db_refs'(Ref, Pred) ). -- 2.54.0