summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-12-15 21:27:31 +0100
committerMarius Bakke <mbakke@fastmail.com>2019-12-18 22:36:37 +0100
commitab7010af1f1077c056529769a53a380147c3933f (patch)
tree3bd5460ce10b6e0205206a70026e925a8b0ca0c8
parentfe3110ac58364aceff71391b984e8056a6db9395 (diff)
downloadguix-ab7010af1f1077c056529769a53a380147c3933f.tar.gz
gexp: Allow character literals in GEXP->SEXP.
Fixes <https://bugs.gnu.org/38628>.

* tests/gexp.scm ("lower-gexp, character literal"): New test.
* guix/gexp.scm (gexp->sexp)[self-quoting?]: Add CHAR? to the tested types.
* guix/repl.scm (self-quoting?): Likewise.
* gnu/tests.scm (marionette-shepherd-service)[self-quoting?]: Likewise.
-rw-r--r--gnu/tests.scm2
-rw-r--r--guix/gexp.scm2
-rw-r--r--guix/repl.scm2
-rw-r--r--tests/gexp.scm6
4 files changed, 9 insertions, 3 deletions
diff --git a/gnu/tests.scm b/gnu/tests.scm
index 27cb39c2b9..cc72e56858 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -98,7 +98,7 @@
                                                 (or (pred x)
                                                     (one-of rest ...))))))
                        (one-of symbol? string? keyword? pair? null? array?
-                               number? boolean?)))
+                               number? boolean? char?)))
 
                    (match (primitive-fork)
                      (0
diff --git a/guix/gexp.scm b/guix/gexp.scm
index a96592ac76..411f0844ff 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1028,7 +1028,7 @@ and in the current monad setting (system type, etc.)"
                                (or (pred x)
                                    (one-of rest ...))))))
       (one-of symbol? string? keyword? pair? null? array?
-              number? boolean?)))
+              number? boolean? char?)))
 
   (define* (reference->sexp ref #:optional native?)
     (with-monad %store-monad
diff --git a/guix/repl.scm b/guix/repl.scm
index 1ead18c53b..0f75f9cd0b 100644
--- a/guix/repl.scm
+++ b/guix/repl.scm
@@ -37,7 +37,7 @@
                              (or (pred x)
                                  (one-of rest ...))))))
     (one-of symbol? string? keyword? pair? null? array?
-            number? boolean?)))
+            number? boolean? char?)))
 
 (define (send-repl-response exp output)
   "Write the response corresponding to the evaluation of EXP to PORT, an
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 84c16422c2..8b1596f66d 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -886,6 +886,12 @@
     (run-with-store %store
       (lower-gexp #~(foo #$+)))))
 
+(test-equal "lower-gexp, character literal"
+  '(#\+)
+  (lowered-gexp-sexp
+   (run-with-store %store
+     (lower-gexp #~(#\+)))))
+
 (test-assertm "gexp->derivation #:references-graphs"
   (mlet* %store-monad
       ((one (text-file "one" (random-text)))