]> Repositorios git - scryer-prolog.git/commitdiff
ENHANCED: format_string domain error for invalid radix in format string
authorMarkus Triska <[email protected]>
Sat, 14 Aug 2021 18:02:47 +0000 (20:02 +0200)
committerMarkus Triska <[email protected]>
Sat, 14 Aug 2021 18:04:07 +0000 (20:04 +0200)
This addresses #1024.

Example:

    ?- format("hello ~0r!", [12]).
    %@ caught: error(domain_error(format_string,"~0r"),format_//2)

src/lib/format.pl

index ad9d40f71251af674f9873059edb51bf912a8ae3..f5bb0b054d2a89bf46c752a2a55e51e47e87eb8c 100644 (file)
@@ -344,12 +344,16 @@ pow10(D, N0-Pow0, N-Pow) :-
         N is N0 + D*10^Pow0,
         Pow is Pow0 + 1.
 
+radix_error(lowercase, R) --> format_("~~~dr", [R]).
+radix_error(uppercase, R) --> format_("~~~dR", [R]).
+
 integer_to_radix(I0, R, Which, Cs) :-
         I is I0, % evaluate compound expression
         must_be(integer, I),
         must_be(integer, R),
         (   \+ between(2, 36, R) ->
-            domain_error(radix, R, format_//2)
+            phrase(radix_error(Which,R), Es),
+            domain_error(format_string, Es, format_//2)
         ;   true
         ),
         digits(Which, Ds),