Changeset 12060


Ignore:
Timestamp:
May 14, 2009, 6:48:31 PM (10 years ago)
Author:
gb
Message:

NX2-RECORDED-SYMBOLS-IN-ARGLIST-ORDER: cope with the fact that not
all symbols are recorded (next-method var, etc.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/nx2.lisp

    r12044 r12060  
    201201                  (dolist (sp (caddr keys))
    202202                    (when sp (return t))))
    203           (flet ((info-for-var (var)
    204                    (or (assoc var entries :test #'eq)
    205                        (error "Missing info for var ~s" (var-name var)))))
    206             (let* ((new ()))
    207               (setq entries (nreverse entries))
    208               (dolist (var (afunc-inherited-vars afunc))
    209                 (push (info-for-var var) new))
    210               (dolist (r req)
    211                 (push (info-for-var r) new))
    212               (dolist (o (car opt))
    213                 (push (info-for-var o) new))
    214               (when (consp rest)
    215                 (setq rest (car rest)))
    216               (when rest
    217                 (push (info-for-var rest) new))
    218               (dolist (k (cadr keys))
    219                 (push (info-for-var k) new))
    220               (dolist (e entries)
    221                 (unless (member e new :test #'eq)
    222                   (push e new)))
    223               (setq entries new))))))
     203          (let* ((new ()))
     204            (flet ((info-for-var (var)
     205                     (assoc var entries :test #'eq)))
     206              (flet ((add-new-info (var)
     207                       (let* ((info (info-for-var var)))
     208                         (when info
     209                           (push info new)))))
     210                (setq entries (nreverse entries))
     211                (dolist (var (afunc-inherited-vars afunc))
     212                  (add-new-info var))
     213                (dolist (r req)
     214                  (add-new-info r))
     215                (dolist (o (car opt))
     216                  (add-new-info o))
     217                (when (consp rest)
     218                  (setq rest (car rest)))
     219                (when rest
     220                  (add-new-info rest))
     221                (dolist (k (cadr keys))
     222                  (add-new-info k))
     223                (dolist (e entries)
     224                  (unless (member e new :test #'eq)
     225                    (push e new)))
     226                (setq entries new)))))))
    224227    entries))
    225228               
Note: See TracChangeset for help on using the changeset viewer.