diff --git a/code/pred.lisp b/code/pred.lisp index 3e6c4c086e2cfdc718c93bcd0da62d41e822655e..3895feee4162b57377e30a5b935ede7dabed910e 100644 --- a/code/pred.lisp +++ b/code/pred.lisp @@ -322,15 +322,13 @@ (declare (optimize speed)) (let ((type (type-expand type))) (if (symbolp type) - (case (info type kind type) - ((:primitive :structure) - (and (structurep object) - (let ((obj-name (%primitive header-ref object 0))) - (or (eq obj-name type) - (let ((def (info type structure-info obj-name))) - (not (null (memq type (c::dd-includes def))))))))) - (t - (error "~S is an unknown type specifier." type))) + (let ((def (info type defined-structure-info obj-name))) + (if def + (and (structurep object) + (let ((obj-name (%primitive header-ref object 0))) + (or (eq obj-name type) + (not (null (memq type (c::dd-includes def))))))) + (error "~S is an unknown type specifier." type))) (error "~S is an unknown type specifier." type))))