X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcross-type.lisp;h=79b8cd13771aba2cffd4ccd1c2ceb3cf4c3fd765;hb=5cd15f4133804a16c5d367556da160144e741852;hp=c68b2ce5c772942ede9b03e49ee271719e5f3920;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/code/cross-type.lisp b/src/code/cross-type.lisp index c68b2ce..79b8cd1 100644 --- a/src/code/cross-type.lisp +++ b/src/code/cross-type.lisp @@ -143,7 +143,6 @@ '(sb!alien:alien)) (member target-type '(system-area-pointer - funcallable-instance sb!alien-internals:alien-value))) (values nil t)) (;; special case when TARGET-TYPE isn't a type spec, but @@ -164,13 +163,13 @@ '(array simple-string simple-vector string vector)) (values (typep host-object target-type) t)) (;; general cases of vectors - (and (not (unknown-type-p (values-specifier-type target-type))) + (and (not (hairy-type-p (values-specifier-type target-type))) (sb!xc:subtypep target-type 'cl:vector)) (if (vectorp host-object) (warn-and-give-up) ; general-case vectors being way too hard (values nil t))) ; but "obviously not a vector" being easy (;; general cases of arrays - (and (not (unknown-type-p (values-specifier-type target-type))) + (and (not (hairy-type-p (values-specifier-type target-type))) (sb!xc:subtypep target-type 'cl:array)) (if (arrayp host-object) (warn-and-give-up) ; general-case arrays being way too hard @@ -208,7 +207,7 @@ (t (values nil t)))) (;; Complexes suffer the same kind of problems as arrays - (and (not (unknown-type-p (values-specifier-type target-type))) + (and (not (hairy-type-p (values-specifier-type target-type))) (sb!xc:subtypep target-type 'cl:complex)) (if (complexp host-object) (warn-and-give-up) ; general-case complexes being way too hard