From 83128f00e9149f3c1bcd4450eb0ed3620a37149c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Mar 2023 22:18:52 +0100 Subject: read-print: 'read-with-comments' reads comments within gexps. Fixes . Reported by Maxim Cournoyer . * guix/read-print.scm (read-with-comments): Special-case #~, #$, and #+. * tests/read-print.scm: Add two tests. --- guix/read-print.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'guix/read-print.scm') diff --git a/guix/read-print.scm b/guix/read-print.scm index fdc85c2693..515eb7669c 100644 --- a/guix/read-print.scm +++ b/guix/read-print.scm @@ -219,6 +219,27 @@ BLANK-LINE? is true, assume PORT is at the beginning of a new line." (list 'quote (loop #f return))) ((eq? chr #\`) (list 'quasiquote (loop #f return))) + ((eq? chr #\#) + (match (read-char port) + (#\~ (list 'gexp (loop #f return))) + (#\$ (list (match (peek-char port) + (#\@ + (read-char port) ;consume + 'ungexp-splicing) + (_ + 'ungexp)) + (loop #f return))) + (#\+ (list (match (peek-char port) + (#\@ + (read-char port) ;consume + 'ungexp-native-splicing) + (_ + 'ungexp-native)) + (loop #f return))) + (chr + (unread-char chr port) + (unread-char #\# port) + (read port)))) ((eq? chr #\,) (list (match (peek-char port) (#\@ -- cgit v1.2.3