X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fcheckgen.lisp;h=b3b9457c531fc7ea0249eedd50e127338637bb79;hb=7848e760d71ba19c6b69b636d12b7ebd28696bf8;hp=bef3289d96e69da9ec48652e6856bbe8e3326f8a;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/compiler/checkgen.lisp b/src/compiler/checkgen.lisp index bef3289..b3b9457 100644 --- a/src/compiler/checkgen.lisp +++ b/src/compiler/checkgen.lisp @@ -280,12 +280,8 @@ ;;; We can always use Multiple-Value-Bind, since the macro is clever about ;;; binding a single variable. (defun make-type-check-form (types) - (collect ((temps)) - (dotimes (i (length types)) - (temps (gensym))) - - `(multiple-value-bind ,(temps) - 'dummy + (let ((temps (make-gensym-list (length types)))) + `(multiple-value-bind ,temps 'dummy ,@(mapcar #'(lambda (temp type) (let* ((spec (let ((*unparse-function-type-simplify* t)) @@ -295,8 +291,9 @@ (%type-check-error ,temp ',(type-specifier (third type)))))) - (temps) types) - (values ,@(temps))))) + temps + types) + (values ,@temps)))) ;;; Splice in explicit type check code immediately before the node which is ;;; Cont's Dest. This code receives the value(s) that were being passed to