Merge pull request #2327 from triska/char_type

FIXED: char_type/2 for unbound first argument.
This commit is contained in:
Mark Thom
2024-02-11 17:33:07 -07:00
committed by GitHub

View File

@@ -143,22 +143,17 @@ char_type(Char, Type) :-
ctype(Type), ctype(Type),
'$char_type'(Char, Type) '$char_type'(Char, Type)
; ground(Type) -> ; ground(Type) ->
max_char_code(Max), ccode(Code),
between(0, Max, Code),
char_code(Char, Code), char_code(Char, Code),
'$char_type'(Char, Type) '$char_type'(Char, Type)
; must_be(character, Char) ; must_be(character, Char)
). ).
max_char_code(Max) :- % 0xD800 to 0xDFFF are surrogate code points used by UTF-16.
catch((length(_, Code),
catch(char_code(_Char, Code), ccode(Code) :- between(0, 0xD7FF, Code).
error(representation_error(_),_), ccode(Code) :- between(0xE000, 0x10FFFF, Code).
throw(max_char_code(Code))),
false),
max_char_code(Code),
Max is Code - 1).
ctype(alnum). ctype(alnum).
ctype(alpha). ctype(alpha).