summaryrefslogtreecommitdiff
path: root/guix/read-print.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-05-05 18:22:56 +0200
committerLudovic Courtès <ludo@gnu.org>2023-05-05 23:47:48 +0200
commit8749f31485888c587c6f88a0a7bdd48cc9e8c9b8 (patch)
treeb46204127e2c5bc02e94740dd79f842093af7ba1 /guix/read-print.scm
parent94d0efffb39878440bcac564a0ce18c7af3de64f (diff)
read-print: Correctly read "(. x)".
* guix/read-print.scm (read-with-comments): Check whether REST is a pair before calling 'set-cdr!'. * tests/read-print.scm ("read-with-comments: half dot notation"): New test.
Diffstat (limited to 'guix/read-print.scm')
-rw-r--r--guix/read-print.scm8
1 files changed, 5 insertions, 3 deletions
diff --git a/guix/read-print.scm b/guix/read-print.scm
index d834105dce..83b9a61b35 100644
--- a/guix/read-print.scm
+++ b/guix/read-print.scm
@@ -179,9 +179,11 @@ BLANK-LINE? is true, assume PORT is at the beginning of a new line."
(match lst
(() result)
(((? dot?) . rest)
- (let ((dotted (reverse rest)))
- (set-cdr! (last-pair dotted) (car result))
- dotted))
+ (if (pair? rest)
+ (let ((dotted (reverse rest)))
+ (set-cdr! (last-pair dotted) (car result))
+ dotted)
+ (car result)))
((x . rest) (loop (cons x result) rest)))))
(let loop ((blank-line? blank-line?)