]> Repositorios git - scryer-prolog.git/commitdiff
ENHANCED: Domain error non_empty_list for empty arguments, addressing #1024.
authorMarkus Triska <[email protected]>
Sun, 15 Aug 2021 10:28:02 +0000 (12:28 +0200)
committerMarkus Triska <[email protected]>
Sun, 15 Aug 2021 10:29:28 +0000 (12:29 +0200)
Example:

    ?- format("~d", []).
    %@ caught: error(domain_error(non_empty_list,[]),format_//2)

src/lib/format.pl

index f5bb0b054d2a89bf46c752a2a55e51e47e87eb8c..e89643044c7b6280ae303bb15af61a222459fdb1 100644 (file)
@@ -284,9 +284,11 @@ cells([~|Fs0], Args0, Tab0, Es, VNs) -->
         { Tab is Tab0 + Num },
         cell(Tab0, Tab, Es),
         cells(Fs, Args, Tab, [], VNs).
-cells([~,C|_], _, _, _, _) -->
-        { atom_chars(A, [~,C]),
-          domain_error(format_string, A, format_//2) }.
+cells([~|Cs], Args, _, _, _) -->
+        (   { Args == [] } ->
+            { domain_error(non_empty_list, [], format_//2) }
+        ;   { domain_error(format_string, [~|Cs], format_//2) }
+        ).
 cells(Fs0, Args, Tab, Es, VNs) -->
         { phrase(upto_what(Fs1, ~), Fs0, Fs),
           Fs1 = [_|_] },