From: Christophe R. <cr...@us...> - 2002-11-27 17:08:34
|
Update of /cvsroot/sbcl/sbcl/tests In directory sc8-pr-cvs1:/tmp/cvs-serv3101/tests Modified Files: loop.pure.lisp Log Message: 0.7.10.2: Fix remaining LOOP bugs from GCL ansi-tests ... duplicate variable names (at any level) signal an error at macroexpansion time; ... IT is only a special loop symbol in the first clause of a conditional execution clause. Index: loop.pure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/loop.pure.lisp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- loop.pure.lisp 27 Nov 2002 16:17:10 -0000 1.13 +++ loop.pure.lisp 27 Nov 2002 17:08:31 -0000 1.14 @@ -146,4 +146,28 @@ (ignore-errors (loop for i in '(1 2 3) thereis (= i 3) collect i)) (assert (null result)) - (assert (typep error 'program-error))) \ No newline at end of file + (assert (typep error 'program-error))) + +(multiple-value-bind (result error) + (ignore-errors + (loop with i = 1 for x from 1 to 3 collect x into i)) + (assert (null result)) + (assert (typep error 'program-error))) +(multiple-value-bind (result error) + ;; this one has a plausible interpretation in terms of LET*, but + ;; ANSI seems specifically to disallow it + (ignore-errors + (loop with i = 1 with i = (1+ i) + for x from 1 to 3 + collect (+ x i))) + (assert (null result)) + (assert (typep error 'program-error))) + +(let ((it 'z)) + (assert (equal + ;; this one just seems weird. Nevertheless... + (loop for i in '(a b c d) + when i + collect it + and collect it) + '(a z b z c z d z)))) |