diff options
author | colin <colin@cicadas.surf> | 2024-11-30 07:25:15 -0800 |
---|---|---|
committer | colin <colin@cicadas.surf> | 2024-11-30 07:25:15 -0800 |
commit | d625b07e4491be03450675b19eb8ff63a3a5e4df (patch) | |
tree | 5c4d23269e9167c94bf2cd384172f08bcd3604e4 /def.lisp | |
parent | dcbd8e039b74143c9b97f6055e2eb5321428637e (diff) |
def:const evaluates early
Diffstat (limited to 'def.lisp')
-rw-r--r-- | def.lisp | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -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. |