X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Finit.lisp;h=14475ea1bdd8da639698e4a548f359cb96de962b;hb=69968cef67fa95f22996c0c8784be8cae63099bb;hp=6b0c91a90f9aa4458f5de2be23d403dba6518a2f;hpb=5eb98a1de601302b0e3eb0c385262fca9093fcc0;p=sbcl.git diff --git a/src/pcl/init.lisp b/src/pcl/init.lisp index 6b0c91a..14475ea 100644 --- a/src/pcl/init.lisp +++ b/src/pcl/init.lisp @@ -141,7 +141,12 @@ (error 'slotd-initialization-error :initarg :name :kind :missing)) (unless (symbolp name) (error 'slotd-initialization-type-error :initarg :name :datum name :expected-type 'symbol)) - (when (constantp name) + (when (and (constantp name) + ;; KLUDGE: names of structure slots are weird, and their + ;; weird behaviour gets grandfathered in this way. (The + ;; negative constraint is hard to express in normal + ;; CLOS method terms). + (not (typep slotd 'structure-slot-definition))) (error 'slotd-initialization-error :initarg :name :kind :constant :value name)) (when (and initformp (not initfunp)) (error 'slotd-initialization-error :initarg :initfunction :kind :missing))