summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcolin <colin@cicadas.surf>2024-11-30 07:25:15 -0800
committercolin <colin@cicadas.surf>2024-11-30 07:25:15 -0800
commitd625b07e4491be03450675b19eb8ff63a3a5e4df (patch)
tree5c4d23269e9167c94bf2cd384172f08bcd3604e4
parentdcbd8e039b74143c9b97f6055e2eb5321428637e (diff)
def:const evaluates early
-rw-r--r--def.lisp15
1 files changed, 8 insertions, 7 deletions
diff --git a/def.lisp b/def.lisp
index 65fd695..055a30b 100644
--- a/def.lisp
+++ b/def.lisp
@@ -19,13 +19,14 @@ easily document uninitialized special variables."
reevaluated."
(assert (good-muffed-var-name-p name :muffer "+"))
(let ((newval (gensym "NEWVAL-")))
- `(let ((,newval ,value))
- (handler-bind ((error
- (lambda (&rest ignore)
- (declare (ignore ignore))
- (invoke-restart 'cl:continue))))
- (makunbound ',name))
- (defconstant ,name ,newval ,@(when doc (list doc))))))
+ `(eval-when (:compile-toplevel :load-toplevel :execute)
+ (let ((,newval ,value))
+ (handler-bind ((error
+ (lambda (&rest ignore)
+ (declare (ignore ignore))
+ (invoke-restart 'cl:continue))))
+ (makunbound ',name))
+ (defconstant ,name ,newval ,@(when doc (list doc)))))))
(defmacro class (name (&rest supers) &body slots-and-options)
"Define a class.