X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcoerce.lisp;h=dc97323ab36962f26599e52283462f9327690ab7;hb=b5703d98da9ebfd688c87e14862ab4e26dc94d14;hp=e257fd731ded492d7a0d39e4536eff93976ef53e;hpb=cea4896b2482b7b2b429c1631d774b4cfbc0efba;p=sbcl.git diff --git a/src/code/coerce.lisp b/src/code/coerce.lisp index e257fd7..dc97323 100644 --- a/src/code/coerce.lisp +++ b/src/code/coerce.lisp @@ -128,6 +128,10 @@ (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)) @@ -136,15 +140,14 @@ ;;; 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 @@ -256,8 +259,7 @@ :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