Merge pull request #1485 from triska/in_character
Implement and use can_be(in_character, ...)
This commit is contained in:
@@ -1366,12 +1366,12 @@ char_code(Char, Code) :-
|
|||||||
).
|
).
|
||||||
|
|
||||||
get_char(C) :-
|
get_char(C) :-
|
||||||
error:can_be(character, C),
|
error:can_be(in_character, C),
|
||||||
current_input(S),
|
current_input(S),
|
||||||
'$get_char'(S, C).
|
'$get_char'(S, C).
|
||||||
|
|
||||||
get_char(S, C) :-
|
get_char(S, C) :-
|
||||||
error:can_be(character, C),
|
error:can_be(in_character, C),
|
||||||
'$get_char'(S, C).
|
'$get_char'(S, C).
|
||||||
|
|
||||||
can_be_number(N, PI) :-
|
can_be_number(N, PI) :-
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
- boolean
|
- boolean
|
||||||
- character
|
- character
|
||||||
- chars
|
- chars
|
||||||
|
- in_character
|
||||||
- integer
|
- integer
|
||||||
- list
|
- list
|
||||||
- term
|
- term
|
||||||
@@ -47,6 +48,7 @@ must_be_(var, Term) :-
|
|||||||
must_be_(integer, Term) :- check_(integer, integer, Term).
|
must_be_(integer, Term) :- check_(integer, integer, Term).
|
||||||
must_be_(atom, Term) :- check_(atom, atom, Term).
|
must_be_(atom, Term) :- check_(atom, atom, Term).
|
||||||
must_be_(character, T) :- check_(error:character, character, T).
|
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) :-
|
must_be_(chars, Ls) :-
|
||||||
can_be(chars, Ls), % prioritize type errors over instantiation errors
|
can_be(chars, Ls), % prioritize type errors over instantiation errors
|
||||||
must_be(list, Ls),
|
must_be(list, Ls),
|
||||||
@@ -88,6 +90,11 @@ character(C) :-
|
|||||||
atom(C),
|
atom(C),
|
||||||
atom_length(C, 1).
|
atom_length(C, 1).
|
||||||
|
|
||||||
|
in_character(C) :-
|
||||||
|
( character(C)
|
||||||
|
; C == end_of_file
|
||||||
|
).
|
||||||
|
|
||||||
ilist(Ls) :-
|
ilist(Ls) :-
|
||||||
'$skip_max_list'(_, _, Ls, Rs),
|
'$skip_max_list'(_, _, Ls, Rs),
|
||||||
( var(Rs) ->
|
( var(Rs) ->
|
||||||
@@ -99,6 +106,7 @@ type(type).
|
|||||||
type(integer).
|
type(integer).
|
||||||
type(atom).
|
type(atom).
|
||||||
type(character).
|
type(character).
|
||||||
|
type(in_character).
|
||||||
type(chars).
|
type(chars).
|
||||||
type(list).
|
type(list).
|
||||||
type(var).
|
type(var).
|
||||||
@@ -129,6 +137,7 @@ can_be(Type, Term) :-
|
|||||||
can_(integer, Term) :- integer(Term).
|
can_(integer, Term) :- integer(Term).
|
||||||
can_(atom, Term) :- atom(Term).
|
can_(atom, Term) :- atom(Term).
|
||||||
can_(character, T) :- character(T).
|
can_(character, T) :- character(T).
|
||||||
|
can_(in_character, T) :- in_character(T).
|
||||||
can_(chars, Ls) :-
|
can_(chars, Ls) :-
|
||||||
( '$is_partial_string'(Ls) -> true
|
( '$is_partial_string'(Ls) -> true
|
||||||
; can_be(list, Ls),
|
; can_be(list, Ls),
|
||||||
|
|||||||
Reference in New Issue
Block a user