1.0.19.17: DOLIST variable type on constant lists
commite082422c19768dd7d6e30126740fe7f05cbd603a
authorNikodemus Siivola <nikodemus@random-state.net>
Sun, 3 Aug 2008 21:39:09 +0000 (3 21:39 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Sun, 3 Aug 2008 21:39:09 +0000 (3 21:39 +0000)
tree5f1840b0e5e740ed9ef6a53f37676652cd896e86
parent646a14a9099c3c6bbb60ff09f7fb6a781a030815
1.0.19.17: DOLIST variable type on constant lists

 * When DOLIST list is a (LIST ...) form where every argument is a
   constant, constant-fold it during macro-expansion. (User has no
   direct access to the list itself, so this is safe.)

 * When DOLIST list ia a constant, add an extra binding,
   and annotate its type as (MEMBER ...).

   This means that the compiler knows that in

    (dolist (x (list 1 2 3)) ...)

   X is (INTEGER 1 3).

 * Also add a STYLE-WARNING for constant dotted lists in DOLIST.
NEWS
src/code/defboot.lisp
src/code/early-extensions.lisp
tests/compiler.pure.lisp
version.lisp-expr