diff options
-rw-r--r-- | guix/read-print.scm | 21 | ||||
-rw-r--r-- | tests/read-print.scm | 15 |
2 files changed, 36 insertions, 0 deletions
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) (#\@ diff --git a/tests/read-print.scm b/tests/read-print.scm index 952b3e6585..f4627e076a 100644 --- a/tests/read-print.scm +++ b/tests/read-print.scm @@ -232,6 +232,21 @@ mnopqrstuvwxyz.\")" (replace \"gmp\" gmp))") (test-pretty-print "\ +#~(modify-phases phases + (add-after 'whatever 'something-else + (lambda _ + ;; This comment appears inside a gexp. + 42)))") + +(test-pretty-print "\ +#~(list #$@(list coreutils ;yup + grep) ;margin comment + #+sed + + ;; Line comment. + #$grep)") + +(test-pretty-print "\ (package ;; Here 'sha256', 'base32', and 'arguments' must be ;; immediately followed by a newline. |