guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/05: gexp: Support 'ungexp' forms in improper lists.


From: Ludovic Courtès
Subject: 02/05: gexp: Support 'ungexp' forms in improper lists.
Date: Sun, 1 Jan 2017 22:31:26 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit 5e2e4a51f93f98c35824e4a7f5a88274d1551b4c
Author: Ludovic Courtès <address@hidden>
Date:   Sun Jan 1 22:22:14 2017 +0100

    gexp: Support 'ungexp' forms in improper lists.
    
    * guix/gexp.scm (gexp)[collect-escapes, substitute-references]: Replace
    the (exp0 exp ...) patterns with (exp0 . exp) to match improper lists.
    Adjust clause bodies accordingly.
    * tests/gexp.scm ("one input package, dotted list"): New test.
---
 guix/gexp.scm  |    8 ++++----
 tests/gexp.scm |   12 +++++++++++-
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/guix/gexp.scm b/guix/gexp.scm
index 79a7b18..1f7fbef 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -812,9 +812,9 @@ environment."
            (cons exp result))
           ((ungexp-native-splicing _ ...)
            (cons exp result))
-          ((exp0 exp ...)
+          ((exp0 . exp)
            (let ((result (loop #'exp0 result)))
-             (fold loop result #'(exp ...))))
+             (loop  #'exp result)))
           (_
            result))))
 
@@ -875,9 +875,9 @@ environment."
          (substitute-ungexp-splicing exp substs))
         (((ungexp-native-splicing _ ...) rest ...)
          (substitute-ungexp-splicing exp substs))
-        ((exp0 exp ...)
+        ((exp0 . exp)
          #`(cons #,(substitute-references #'exp0 substs)
-                 #,(substitute-references #'(exp ...) substs)))
+                 #,(substitute-references #'exp substs)))
         (x #''x)))
 
     (syntax-case s (ungexp output)
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 797d5fa..baf7883 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -92,6 +92,16 @@
                              (package-derivation %store coreutils)))
                  (gexp->sexp* exp)))))
 
+(test-assert "one input package, dotted list"
+  (let ((exp (gexp (coreutils . (ungexp coreutils)))))
+    (and (gexp? exp)
+         (match (gexp-inputs exp)
+           (((p "out"))
+            (eq? p coreutils)))
+         (equal? `(coreutils . ,(derivation->output-path
+                                 (package-derivation %store coreutils)))
+                 (gexp->sexp* exp)))))
+
 (test-assert "one input origin"
   (let ((exp (gexp (display (ungexp (package-source coreutils))))))
     (and (gexp? exp)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]