diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-05-31 17:32:22 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-05-31 18:13:08 +0200 |
commit | 9768848af80764af6040e75867ae15a41228364b (patch) | |
tree | 231f65e6c5f3d86cd5604075d433335e2d32c5bd | |
parent | b1059b38b280590881659ce2b82c22cdb29c5ba2 (diff) | |
download | patches-9768848af80764af6040e75867ae15a41228364b.tar patches-9768848af80764af6040e75867ae15a41228364b.tar.gz |
records: Make a couple of procedures available at expansion time.
* guix/records.scm (current-abi-identifier, abi-check): Wrap in
'eval-when'.
-rw-r--r-- | guix/records.scm | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/guix/records.scm b/guix/records.scm index c71cfcfe32..da3ecdaaf8 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -63,22 +63,25 @@ (set-exception-printer! 'record-abi-mismatch-error print-record-abi-mismatch-error) -(define (current-abi-identifier type) - "Return an identifier unhygienically derived from TYPE for use as its +(eval-when (expand load eval) + ;; The procedures below are needed both at run time and at expansion time. + + (define (current-abi-identifier type) + "Return an identifier unhygienically derived from TYPE for use as its \"current ABI\" variable." - (let ((type-name (syntax->datum type))) - (datum->syntax - type - (string->symbol - (string-append "% " (symbol->string type-name) - " abi-cookie"))))) - -(define (abi-check type cookie) - "Return syntax that checks that the current \"application binary + (let ((type-name (syntax->datum type))) + (datum->syntax + type + (string->symbol + (string-append "% " (symbol->string type-name) + " abi-cookie"))))) + + (define (abi-check type cookie) + "Return syntax that checks that the current \"application binary interface\" (ABI) for TYPE is equal to COOKIE." - (with-syntax ((current-abi (current-abi-identifier type))) - #`(unless (eq? current-abi #,cookie) - (throw 'record-abi-mismatch-error #,type)))) + (with-syntax ((current-abi (current-abi-identifier type))) + #`(unless (eq? current-abi #,cookie) + (throw 'record-abi-mismatch-error #,type))))) (define-syntax make-syntactic-constructor (syntax-rules () |