X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fcheckgen.lisp;h=134e3b8989db4ddf0e88f695109da54193eea29b;hb=98a76d4426660876dec6649b1e228d2e5b47f579;hp=3ee6da795724b86396717b6d229b0dd1df3b5ad3;hpb=a74b0bdb483504f6faddf8089f848f61ed94b92a;p=sbcl.git diff --git a/src/compiler/checkgen.lisp b/src/compiler/checkgen.lisp index 3ee6da7..134e3b8 100644 --- a/src/compiler/checkgen.lisp +++ b/src/compiler/checkgen.lisp @@ -226,7 +226,7 @@ (dest (continuation-dest cont))) (aver (not (eq ctype *wild-type*))) (multiple-value-bind (ctypes count) (no-fun-values-types ctype) - (multiple-value-bind (atypes acount) (no-fun-values-types ctype) + (multiple-value-bind (atypes acount) (no-fun-values-types atype) (aver (eq count acount)) (cond ((not (eq count :unknown)) (if (or (exit-p dest) @@ -253,7 +253,11 @@ (not (or (values-subtypep (continuation-proven-type cont) (continuation-type-to-check cont)) (and (combination-p dest) - (eq (combination-kind dest) :full) + (let ((kind (combination-kind dest))) + (or (eq kind :full) + (and (fun-info-p kind) + (null (fun-info-templates kind)) + (not (fun-info-ir2-convert kind))))) ;; The theory is that the type assertion is from a ;; declaration in (or on) the callee, so the callee ;; should be able to do the check. We want to let