0.7.8.53:
[sbcl.git] / src / compiler / checkgen.lisp
index 1712cfe..6ada02b 100644 (file)
           (let ((kind (basic-combination-kind dest)))
             (cond ((eq cont (basic-combination-fun dest)) t)
                   ((eq kind :local) t)
-                  ((member kind '(:full :error)) nil)
+                   ((not (eq (continuation-asserted-type cont)
+                             (continuation-externally-checkable-type cont)))
+                    ;; There is an explicit assertion.
+                    t)
+                   ((eq kind :full)
+                    ;; 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 the callee do the check, because it is
+                    ;; possible that by the time of call that
+                    ;; declaration will be changed and we do not want
+                    ;; to make people recompile all calls to a
+                    ;; function when they were originally compiled
+                    ;; with a bad declaration. (See also bug 35.)
+                    nil)
+
+                  ((eq kind :error) nil)
                    ;; :ERROR means that we have an invalid syntax of
                    ;; the call and the callee will detect it before
-                   ;; thinking about types. When KIND is :FULL, the
-                   ;; theory is that the type assertion is probably
-                   ;; from a declaration in (or on) the callee, so the
-                   ;; callee should be able to do the check. We want
-                   ;; to let the callee do the check, because it is
-                   ;; possible that by the time of call that
-                   ;; declaration will be changed and we do not want
-                   ;; to make people recompile all calls to a function
-                   ;; when they were originally compiled with a bad
-                   ;; declaration. (See also bug 35.)
+                   ;; thinking about types.
 
                   ((fun-info-ir2-convert kind) t)
                   (t