0.pre7.62:
[sbcl.git] / src / code / coerce.lisp
index e257fd7..dc97323 100644 (file)
   (etypecase object
     (list (list-to-bit-vector* object))
     (vector (vector-to-bit-vector* object))))
+(defun coerce-to-simple-vector (x)
+  (if (simple-vector-p x)
+      x
+      (replace (make-array (length x)) x)))
 (defun coerce-to-vector (object output-type-spec)
   (etypecase object
     (list (list-to-vector* object output-type-spec))
 ;;; old working version
 (defun coerce (object output-type-spec)
   #!+sb-doc
-  "Coerces the Object to an object of type Output-Type-Spec."
+  "Coerce the Object to an object of type Output-Type-Spec."
   (flet ((coerce-error ()
           (/show0 "entering COERCE-ERROR")
           (error 'simple-type-error
                  :format-control "~S can't be converted to type ~S."
                  :format-arguments (list object output-type-spec)))
         (check-result (result)
-          #!+high-security
-          (check-type-var result output-type-spec)
+          #!+high-security (aver (typep result output-type-spec))
           result))
     (let ((type (specifier-type output-type-spec)))
       (cond
                  :format-control "~S can't be converted to type ~S."
                  :format-arguments (list object output-type-spec)))
         (check-result (result)
-          #!+high-security
-          (check-type-var result output-type-spec)
+          #!+high-security (aver (typep result output-type-spec))
           result))
     (let ((type (specifier-type output-type-spec)))
       (cond