diff options
-rw-r--r-- | guix/gexp.scm | 4 | ||||
-rw-r--r-- | tests/gexp.scm | 14 |
2 files changed, 17 insertions, 1 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm index 78b8af6fbc..9e193c76c4 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -270,7 +270,9 @@ expand to file names, but it's possible to expand to a plain data type." (if (not expand) (loop lowered (lookup-expander lowered)) (return (expand obj lowered output))) - (return lowered))))))) ;self-quoting + (if (not expand) ;self-quoting + (return lowered) + (return (expand obj lowered output))))))))) (define-syntax define-gexp-compiler (syntax-rules (=> compiler expander) diff --git a/tests/gexp.scm b/tests/gexp.scm index 20ef8d2648..1beeb67c21 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -285,6 +285,20 @@ (((thing "out")) (eq? thing file)))))) +(test-assert "file-append, raw store item" + (let* ((obj (plain-file "example.txt" "Hello!")) + (a (file-append obj "/a")) + (b (file-append a "/b")) + (c (file-append b "/c")) + (exp #~(list #$c)) + (item (run-with-store %store (lower-object obj))) + (lexp (run-with-store %store (lower-gexp exp)))) + (and (equal? (lowered-gexp-sexp lexp) + `(list ,(string-append item "/a/b/c"))) + (equal? (lowered-gexp-sources lexp) + (list item)) + (null? (lowered-gexp-inputs lexp))))) + (test-assertm "with-parameters for %current-system" (mlet* %store-monad ((system -> (match (%current-system) ("aarch64-linux" "x86_64-linux") |