Changeset 11833


Ignore:
Timestamp:
Mar 20, 2009, 5:18:12 PM (11 years ago)
Author:
gz
Message:

Change dolist to not bind the iteration var to nil, so that declarations like (dolist (x list-of-fixnums) (declare (fixnum x)) ..) are not violated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lib/macros.lisp

    r11810 r11833  
    184184         (lstsym (gensym)))
    185185    (multiple-value-bind (forms decls) (parse-body body env nil)
    186      `(block nil
    187        (let* ((,lstsym ,list) ,varsym)
    188         ,@decls
    189           (tagbody
    190             (go ,tstlab)
    191             ,toplab
    192             (setq ,lstsym (cdr (the list ,lstsym)))
    193             ,@forms
    194             ,tstlab
    195             (setq ,varsym (car ,lstsym))
    196             (if ,lstsym (go ,toplab)))
    197           ,@(if ret `((progn  ,ret))))))))
     186      `(block nil
     187         (let* ((,lstsym ,list))
     188           (tagbody
     189              (go ,tstlab)
     190              ,toplab
     191              (let ((,varsym (car ,lstsym)))
     192                ,@decls
     193                ,@forms
     194                (setq ,lstsym (cdr (the list ,lstsym))))
     195              ,tstlab
     196              (if ,lstsym (go ,toplab))))
     197         ,@(if ret `((let ((,varsym nil))
     198                       (declare (ignore-if-unused ,varsym))
     199                       ,@decls
     200                       ,ret)))))))
    198201
    199202
Note: See TracChangeset for help on using the changeset viewer.