X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fboot.lisp;h=b277f876504308868721f987cfc0bdc1a84a6183;hb=0e35b321b97477bcfedaa1a5aed1fa87d635d262;hp=638f6a9004695342adedc0adc27e3d4632800edf;hpb=617079f738359a0d58282badfd49982a263c15dc;p=sbcl.git diff --git a/src/pcl/boot.lisp b/src/pcl/boot.lisp index 638f6a9..b277f87 100644 --- a/src/pcl/boot.lisp +++ b/src/pcl/boot.lisp @@ -616,12 +616,14 @@ bootstrapping. (ecase kind ((:primitive) `(type ,specializer ,parameter)) ((:defined) - ;; some BUILT-IN-CLASSes (e.g. REAL) are also :DEFINED - ;; types. Nothing else should be. (let ((class (find-class specializer nil))) - (aver class) - (aver (typep class 'built-in-class))) - `(type ,specializer ,parameter)) + ;; CLASS can be null here if the user has erroneously + ;; tried to use a defined type as a specializer; it + ;; can be a non-BUILT-IN-CLASS if the user defines a + ;; type and calls (SETF FIND-CLASS) in a consistent + ;; way. + (when (and class (typep class 'built-in-class)) + `(type ,specializer ,parameter)))) ((:instance nil) (let ((class (find-class specializer nil))) (cond