summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-02-20 17:12:47 +0100
committerLudovic Courtès <ludo@gnu.org>2009-02-20 17:12:47 +0100
commitd39b967642e09cd82e52da23833df349dcfd7803 (patch)
tree9c61685f2595fab2c46b3f0b6016ff51fc850606
parent6d77c6efa00e61355bdbab12f3d2ded53341b786 (diff)
downloadguile-d39b967642e09cd82e52da23833df349dcfd7803.tar.gz
Fix compilation of `(ice-9 getopt-long)'.
* module/ice-9/getopt-long.scm (option-spec-fields): Enclose in a `(load-toplevel compile-toplevel)' `eval-case'. (define-one-option-spec-field-accessor, define-one-option-spec-field-modifier): Enclose in a `compile-toplevel'-only `eval-case'.
-rw-r--r--module/ice-9/getopt-long.scm37
1 files changed, 24 insertions, 13 deletions
diff --git a/module/ice-9/getopt-long.scm b/module/ice-9/getopt-long.scm
index 9e39e60c0..b1a9c7622 100644
--- a/module/ice-9/getopt-long.scm
+++ b/module/ice-9/getopt-long.scm
@@ -1,4 +1,4 @@
-;;; Copyright (C) 1998, 2001, 2006 Free Software Foundation, Inc.
+;;; Copyright (C) 1998, 2001, 2006, 2009 Free Software Foundation, Inc.
;;;
;; This library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public
@@ -160,23 +160,34 @@
:use-module ((ice-9 common-list) :select (some remove-if-not))
:export (getopt-long option-ref))
-(define option-spec-fields '(name
- value
- required?
- single-char
- predicate
- value-policy))
+(eval-case
+ ((load-toplevel compile-toplevel)
+
+ ;; This binding is used both at compile-time and run-time.
+
+ (define option-spec-fields '(name
+ value
+ required?
+ single-char
+ predicate
+ value-policy))))
(define option-spec (make-record-type 'option-spec option-spec-fields))
(define make-option-spec (record-constructor option-spec option-spec-fields))
-(define (define-one-option-spec-field-accessor field)
- `(define ,(symbol-append 'option-spec-> field) ;;; name slib-compat
- (record-accessor option-spec ',field)))
+(eval-case
+ ((compile-toplevel)
+
+ ;; The following procedures are used only at compile-time when expanding
+ ;; `define-all-option-spec-accessors/modifiers' (see below).
+
+ (define (define-one-option-spec-field-accessor field)
+ `(define ,(symbol-append 'option-spec-> field) ;;; name slib-compat
+ (record-accessor option-spec ',field)))
-(define (define-one-option-spec-field-modifier field)
- `(define ,(symbol-append 'set-option-spec- field '!) ;;; name slib-compat
- (record-modifier option-spec ',field)))
+ (define (define-one-option-spec-field-modifier field)
+ `(define ,(symbol-append 'set-option-spec- field '!) ;;; name slib-compat
+ (record-modifier option-spec ',field)))))
(defmacro define-all-option-spec-accessors/modifiers ()
`(begin