diff --git a/guix/utils.scm b/guix/utils.scm index c68094cf49b43e9f2d2163b2dc04d9a618428c00..ded31142aab2741c3dd99e1c6eacc2ecb0fc3c02 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -369,7 +369,7 @@ (define (default-keyword-arguments args defaults) (match defaults ((kw value rest ...) (loop rest - (if (assoc-ref kw args) + (if (memq kw args) args (cons* kw value args)))) (() diff --git a/tests/utils.scm b/tests/utils.scm index 6590ed91cf8cca567f31a286adc74ab9dc37fe37..960928c842f36fe0a16f771922a683db078d9764 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -111,6 +111,18 @@ (define temp-file (ensure-keyword-arguments '(#:foo 2) '(#:bar 3)) (ensure-keyword-arguments '(#:foo 2) '(#:bar 3 #:foo 42)))) +(test-equal "default-keyword-arguments" + '((#:foo 2) + (#:foo 2) + (#:foo 2 #:bar 3) + (#:foo 2 #:bar 3) + (#:foo 2 #:bar 3)) + (list (default-keyword-arguments '() '(#:foo 2)) + (default-keyword-arguments '(#:foo 2) '(#:foo 4)) + (default-keyword-arguments '() '(#:bar 3 #:foo 2)) + (default-keyword-arguments '(#:bar 3) '(#:foo 2)) + (default-keyword-arguments '(#:foo 2 #:bar 3) '(#:bar 6)))) + (test-assert "filtered-port, file" (let* ((file (search-path %load-path "guix.scm")) (input (open-file file "r0b")))