Ignore:
Timestamp:
Feb 19, 2008, 8:08:50 AM (13 years ago)
Author:
gb
Message:

Propagate changeset:8513 to this branch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/nx1.lisp

    r8421 r8514  
    17751775
    17761776(defnx1 nx1-let let (pairs &body forms &environment old-env)
    1777   (let* ((vars nil)
    1778          (vals nil)
    1779          (varspecs nil))
     1777  (collect ((vars)
     1778            (vals)
     1779            (varbindings))
    17801780    (with-nx-declarations (pending)
    17811781      (multiple-value-bind (body decls)
    17821782                           (parse-body forms *nx-lexical-environment* nil)
    17831783        (nx-process-declarations pending decls)
    1784         ; Make sure that the initforms are processed in the outer
    1785         ; environment (in case any declaration handlers side-effected
    1786         ; the environment.)
     1784        ;; Make sure that the initforms are processed in the outer
     1785        ;; environment (in case any declaration handlers side-effected
     1786        ;; the environment.)
     1787       
    17871788        (let* ((*nx-lexical-environment* old-env))
    17881789          (dolist (pair pairs)
    1789             (push (nx-need-var (nx-pair-name pair)) vars)
    1790             (push (nx1-typed-var-initform pending (car vars) (nx-pair-initform pair)) vals)))
    1791         (let* ((*nx-bound-vars* (append vars *nx-bound-vars*))
    1792                (varbindings (nx1-note-var-bindings
    1793                              (dolist (sym vars varspecs)
    1794                                (push (nx-new-var pending sym) varspecs))
    1795                              (setq vals (nreverse vals))))
    1796                (form
    1797                 (make-acode
    1798                  (%nx1-operator let)
    1799                  varspecs
    1800                  vals
    1801                  (progn
    1802                    (nx-effect-other-decls pending *nx-lexical-environment*)
    1803                    (nx1-env-body body old-env))
     1790            (let* ((sym (nx-need-var (nx-pair-name pair)))
     1791                   (var (nx-cons-var sym))
     1792                   (val (nx1-typed-var-initform pending sym (nx-pair-initform pair)))
     1793                   (binding (nx1-note-var-binding var val)))
     1794              (vars var)
     1795              (vals val)
     1796              (when binding (varbindings binding)))))
     1797        (let* ((*nx-bound-vars* *nx-bound-vars*)
     1798               (varbindings (varbindings)))
     1799          (dolist (v (vars)) (nx-init-var pending v))
     1800          (let* ((form
     1801                  (make-acode
     1802                   (%nx1-operator let)
     1803                   (vars)
     1804                   (vals)
     1805                   (progn
     1806                     (nx-effect-other-decls pending *nx-lexical-environment*)
     1807                     (nx1-env-body body old-env))
    18041808                 *nx-new-p2decls*)))
    18051809          (nx1-check-var-bindings varbindings)
    1806           (nx1-punt-bindings varspecs vals)
    1807           form)))))
     1810          (nx1-punt-bindings (vars) (vals))
     1811          form))))))
    18081812
    18091813
Note: See TracChangeset for help on using the changeset viewer.