]> Repositorios git - scryer-prolog.git/commitdiff
ADDED: must_be(in_character, ...) and can_be(in_character, ...)
authorMarkus Triska <[email protected]>
Sun, 22 May 2022 20:43:01 +0000 (22:43 +0200)
committerMarkus Triska <[email protected]>
Sun, 22 May 2022 21:04:27 +0000 (23:04 +0200)
src/lib/error.pl

index 87b3ff46183bb863d1035ee6336c9f116ee6baea..08919d51e801d62ee6ba454a53345d2b11cdf632 100644 (file)
@@ -28,6 +28,7 @@
        - boolean
        - character
        - chars
+       - in_character
        - integer
        - list
        - term
@@ -47,6 +48,7 @@ must_be_(var, Term) :-
 must_be_(integer, Term) :- check_(integer, integer, Term).
 must_be_(atom, Term)    :- check_(atom, atom, Term).
 must_be_(character, T)  :- check_(error:character, character, T).
+must_be_(in_character, T) :- check_(error:in_character, in_character, T).
 must_be_(chars, Ls) :-
         can_be(chars, Ls), % prioritize type errors over instantiation errors
         must_be(list, Ls),
@@ -88,6 +90,11 @@ character(C) :-
         atom(C),
         atom_length(C, 1).
 
+in_character(C) :-
+        (   character(C)
+        ;   C == end_of_file
+        ).
+
 ilist(Ls) :-
         '$skip_max_list'(_, _, Ls, Rs),
         (   var(Rs) ->
@@ -99,6 +106,7 @@ type(type).
 type(integer).
 type(atom).
 type(character).
+type(in_character).
 type(chars).
 type(list).
 type(var).
@@ -129,6 +137,7 @@ can_be(Type, Term) :-
 can_(integer, Term) :- integer(Term).
 can_(atom, Term)    :- atom(Term).
 can_(character, T)  :- character(T).
+can_(in_character, T) :- in_character(T).
 can_(chars, Ls)     :-
         (   '$is_partial_string'(Ls) -> true
         ;   can_be(list, Ls),