summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-03-12 17:35:32 +0100
committerLudovic Courtès <ludo@gnu.org>2017-03-12 17:47:25 +0100
commit334c95306a298803096a0077c892d69473ad0824 (patch)
tree30467a565dd6c49dc996fb2cad64513ac4279b5f
parent239c22663ac928618028c4ec03cefc77de788e9d (diff)
downloadguix-334c95306a298803096a0077c892d69473ad0824.tar.gz
syscalls: Adjust 'define-bits' to macro literal semantics of 2.2.
* guix/build/syscalls.scm (define-bits): Do not define NAMES... as
top-level variables since that prevents literal matches in 2.2.
Instead, determine constant values at expansion time.
-rw-r--r--guix/build/syscalls.scm8
1 files changed, 4 insertions, 4 deletions
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index b68c48a05a..58c23f2844 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -1346,12 +1346,12 @@ given an integer, returns the list of names of the constants that are or'd."
      (begin
        (define-syntax constructor
          (syntax-rules (names ...)
+           ((_) 0)
            ((_ names) values) ...
-           ((_ several (... ...))
-            (logior (constructor several) (... ...)))))
+           ((_ first rest (... ...))
+            (logior (constructor first) rest (... ...)))))
        (define (bits->symbols bits)
-         (bits->symbols-body bits (names ...) (values ...)))
-       (define names values) ...))))
+         (bits->symbols-body bits (names ...) (values ...)))))))
 
 ;; 'local-flags' bits from <bits/termios.h>
 (define-bits local-flags