X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=BUGS;h=fd35adacef5297b408a28a1a72dee8686f308aea;hb=01e9e8c568777d6480699e6cb3947f38c3bed350;hp=890f9577402f58ef2cf6051f2234d0e9ed76ad9a;hpb=ebc0f0ebf9efd39519ab86ba28c33abdb25443e0;p=sbcl.git diff --git a/BUGS b/BUGS index 890f957..fd35ada 100644 --- a/BUGS +++ b/BUGS @@ -2176,3 +2176,22 @@ WORKAROUND: argument to CHECK-FOR-CIRCULARITY, but I haven't reverse-engineered enough of the intended meaning of the different MODE values to be confident of this. + +404: nonstandard DWIMness in LOOP with unportably-ordered clauses + In sbcl-0.9.13, the code + (loop with stack = (make-array 2 :fill-pointer 2 :initial-element t) + for length = (length stack) + while (plusp length) + for element = (vector-pop stack) + collect element) + compiles without error or warning and returns (T T). Unfortunately, + it is inconsistent with the ANSI definition of the LOOP macro, + because it mixes up VARIABLE-CLAUSEs with MAIN-CLAUSEs. Furthermore, + SBCL's interpretation of the intended meaning is only one possible, + unportable interpretation of the noncompliant code; in CLISP 2.33.2, + the code compiles with a warning + LOOP: FOR clauses should occur before the loop's main body + and then fails at runtime with + VECTOR-POP: #() has length zero + perhaps because CLISP has shuffled the clauses into an + ANSI-compliant order before proceeding.