X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftypetran.lisp;h=4f47e172178744b148aa04c313c2c8fc1ee5338d;hb=5a9a81ca693a7b82d810cbe725818cd96244099e;hp=eb23711f04cf412a26df8bb8753fb820df17486a;hpb=ba649fc0ec1d25dae4bf97d22611d78d42a7d187;p=sbcl.git diff --git a/src/compiler/typetran.lisp b/src/compiler/typetran.lisp index eb23711..4f47e17 100644 --- a/src/compiler/typetran.lisp +++ b/src/compiler/typetran.lisp @@ -238,7 +238,8 @@ `(%typep ,object ',spec)) (t (ecase (first spec) - (satisfies `(if (funcall #',(second spec) ,object) t nil)) + (satisfies + `(if (funcall (global-function ,(second spec)) ,object) t nil)) ((not and) (once-only ((n-obj object)) `(,(first spec) ,@(mapcar (lambda (x) @@ -621,6 +622,11 @@ `(if (typep x ',tval) x (replace (make-array (length x) :element-type 'character) x))) + ;; Special case VECTOR + ((eq tval 'vector) + `(if (vectorp x) + x + (replace (make-array (length x)) x))) ;; Handle specialized element types for 1D arrays. ((csubtypep tspec (specifier-type '(array * (*)))) ;; Can we avoid checking for dimension issues like (COERCE FOO