Fix halt/1 built-in predicate for ISO Prolog Core standard compliance

This commit is contained in:
Paulo Moura
2022-03-06 21:33:49 +00:00
parent 475fbf9561
commit 495168e7bb

View File

@@ -1218,11 +1218,14 @@ op(Priority, OpSpec, Op) :-
halt :- halt(0). halt :- halt(0).
halt(N) :- halt(N) :-
must_be_number(N, halt/1), ( var(N) ->
( -2^31 =< N, N =< 2^31 - 1 -> throw(error(instantiation_error, halt/1)) % 8.17.4.3 a)
'$halt'(N) ; \+ integer(N) ->
; throw(error(domain_error(exit_code, N), halt/1)) throw(error(type_error(integer, N), halt/1)) % 8.17.4.3 b)
). ; -2^31 =< N, N =< 2^31 - 1 ->
'$halt'(N)
; throw(error(domain_error(exit_code, N), halt/1))
).
atom_length(Atom, Length) :- atom_length(Atom, Length) :-
( var(Atom) -> ( var(Atom) ->