X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcross-type.lisp;h=72d50923e9ab887aea612fe9b8115eb4885acd01;hb=829ced3e78a23ba153ba4db64e6ea6984c2313b6;hp=e431dbb0ba3950daf45579d216a9ea7950cc3e24;hpb=2dbee6e782b54f8780933790d61a24cdb67b8d04;p=sbcl.git diff --git a/src/code/cross-type.lisp b/src/code/cross-type.lisp index e431dbb..72d5092 100644 --- a/src/code/cross-type.lisp +++ b/src/code/cross-type.lisp @@ -248,7 +248,7 @@ (if (stringp host-object) (warn-and-give-up) (values nil t))) - ((target-type-is-in '(character base-char)) + ((target-type-is-in '(character base-char standard-char)) (cond ((typep host-object 'standard-char) (values t t)) ((not (characterp host-object)) @@ -289,6 +289,12 @@ ;; trivial. (and (every/type #'cross-typep host-object rest)) (or (any/type #'cross-typep host-object rest)) + (not + (multiple-value-bind (value surep) + (cross-typep host-object (car rest)) + (if surep + (values (not value) t) + (warn-and-give-up)))) ;; If we want to work with the KEYWORD type, we need ;; to grok (SATISFIES KEYWORDP). (satisfies