Iterate error in LW?
I've run across a strange bug in iterate, LW 4.3, Mac OS X.
Compiling this form:
(defun test-iter (a b)
(iter (repeat 4)
(multiple-value-setq (a b) (foo))))
or
(defun test-iter (a b)
(iter (repeat 4)
(setf (values a b) (foo))))
produces an error from iterate, saying:
-----
Unknown special form MULTIPLE-VALUE-BIND-CALL. The lisp environment
claims that MULTIPLE-VALUE-BIND-CALL is a special operator, but ITERATE
doesn't know how to handle it.
-----
A patch to iter produced this in its error output:
-------
(MULTIPLE-VALUE-BIND-CALL
#'(LAMBDA (&OPTIONAL G3385 G3386 &REST EXTRA-VALS3387)
(DECLARE (IGNORE EXTRA-VALS3387) (WEAK-LAMBDA-NAME DUMMY-LAMBDA))
(LET* () (VALUES (SETQ A G3385) (SETQ B G3386))))
(FOO))
-------
The macro expansion of the iter in the original form has
MULTIPLE-VALUE-CALL instead of MULTIPLE-VALUE-BIND-CALL:
(LET* ((#:COUNT181 NIL))
(BLOCK NIL
(TAGBODY (SETQ #:COUNT181 4)
LOOP-TOP-NIL (IF (<= #:COUNT181 0) (GO LOOP-END-NIL))
(VALUES (LET* ()
(MULTIPLE-VALUE-CALL #'(LAMBDA (&OPTIONAL
#:G1829 #:G1830 &REST #:|m-v-b-&rest1831|)
(DECLARE (IGNORE
#:|m-v-b-&rest1831|))
(LET* () (VALUES (SETQ
A #:G1829) (SETQ B #:G1830))))
(FOO))))
(SETQ #:COUNT181 (1- #:COUNT181))
(GO LOOP-TOP-NIL)
LOOP-END-NIL)
NIL))
and DESCRIBE shows MULTIPLE-VALUE-BIND-CALL to be completely undefined
and unbound.
Any idea what this is?
Thanks.
- Stoney