>>>>> "Drew" == Drew McDermott <[EMAIL PROTECTED]> writes:

    Drew> The following code (distilled from a much larger example), generates
    Drew> compiler errors --

    Drew> [File "bug5.lisp"] --

    Drew> (defun spunk (a b)
    Drew>    (let (k m p q)
    Drew>       (multiple-value-setq
    Drew>          (k m p q)
    Drew>         (the (values t t t t)
    Drew>           (punk a b)))))

    Drew> Here is the version info for CCL (running on Suse Linux) --

[snip]


    Drew> Error in function LISP::ASSERT-ERROR:
    Drew>    The assertion (NULL (KERNEL:ARGS-TYPE-REQUIRED C::ATYPE)) failed.
    Drew>    [Condition of type SIMPLE-ERROR]

    Drew> Restarts:
    Drew>   0: [CONTINUE] Retry assertion.
    Drew>   1: [ABORT] Abort handling SLIME request.
    Drew>   2: [ABORT] Return to Top-Level.

    Drew> Backtrace:
    Drew>   0: (LISP::ASSERT-ERROR (NULL (KERNEL:ARGS-TYPE-REQUIRED C::ATYPE)) 
NIL NIL)
    Drew>   1: (C::CONTINUATION-CHECK-TYPES #<Continuation c1> NIL)

Ok.  This particular error comes from this snip of code from
continuation-check-types in compiler/checkgen.lisp:

            ((and (mv-combination-p dest)
                  (eq (basic-combination-kind dest) :local))
             (assert (values-type-p atype))
             (assert (null (args-type-required atype)))  ; <--- here
             (maybe-negate-check cont (args-type-optional atype) force-hairy))

I'm not sure why the number of required args in a values must be 0
here.  Commenting out this assertion allows the code to compile and
run.

Could you test this with your application?  You can just compile this
function in your running lisp with slime.

Douglas added this assertion some time ago, when he was reworking
values types.  I think at that time values types were converted from
(values a b c d) to (values &optional a b c d).  But later Gerd
changed this so this conversion doesn't happen.  I'm kind of guessing,
though, from just looking at the commit logs.  The original version of
the code did not have this assertion, so it's probably ok.

I'd appreciate it if you could test this with your larger application.

Ray



Reply via email to