summaryrefslogtreecommitdiff
path: root/guix/read-print.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-09-17 16:15:17 +0200
committerLudovic Courtès <ludo@gnu.org>2022-09-20 19:24:31 +0200
commit7a698da0d04d75f1c49f9ae9f358070acab0f781 (patch)
treeb0d4b48b18fdcdfc822313b569e1e7c25fec4c6d /guix/read-print.scm
parent818220f1ccd57d14a62f07489b0e5e21837bb3dd (diff)
downloadguix-patches-7a698da0d04d75f1c49f9ae9f358070acab0f781.tar
guix-patches-7a698da0d04d75f1c49f9ae9f358070acab0f781.tar.gz
read-print: Correctly support multiple same-named newline forms.
Previously (home-environment (services ...)) would not be considered a "newline form". This fixes it. * guix/read-print.scm (newline-form?): Use 'vhash-foldq*' instead of 'vhash-assq' and iterate over candidates. * tests/read-print.scm: Add test.
Diffstat (limited to 'guix/read-print.scm')
-rw-r--r--guix/read-print.scm7
1 files changed, 3 insertions, 4 deletions
diff --git a/guix/read-print.scm b/guix/read-print.scm
index a5a1b708bf..c8849e767b 100644
--- a/guix/read-print.scm
+++ b/guix/read-print.scm
@@ -367,10 +367,9 @@ surrounding SYMBOL."
(define (newline-form? symbol context)
"Return true if parenthesized expressions starting with SYMBOL must be
followed by a newline."
- (match (vhash-assq symbol %newline-forms)
- (#f #f)
- ((_ . prefix)
- (prefix? prefix context))))
+ (let ((matches (vhash-foldq* cons '() symbol %newline-forms)))
+ (find (cut prefix? <> context)
+ matches)))
(define (escaped-string str)
"Return STR with backslashes and double quotes escaped. Everything else, in