1.0.31.31: SATISFIES cannot refer to local functions
[sbcl.git] / src / compiler / typetran.lisp
index eb23711..4f47e17 100644 (file)
            `(%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)
               `(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