Fix current_predicate/1 predicate error checking

This commit is contained in:
Paulo Moura
2021-05-16 23:49:21 +01:00
parent 56bbcb1cb3
commit 0e263dd753

View File

@@ -1083,8 +1083,17 @@ abolish(Pred) :-
current_predicate(Pred) :- current_predicate(Pred) :-
( nonvar(Pred), Pred \= _ / _ ( var(Pred) ->
-> throw(error(type_error(predicate_indicator, Pred), current_predicate/1)) '$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, _), ; '$get_next_db_ref'(Ref, _),
'$iterate_db_refs'(Ref, Pred) '$iterate_db_refs'(Ref, Pred)
). ).