Changeset 14067


Ignore:
Timestamp:
08/09/12 09:19:40 (8 years ago)
Author:
ehuelsmann
Message:

Fix declarations being dropped on inline expansions.

Report by James M. Lawrence.

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compile-file.lisp

    r14027 r14067  
    529529            (setf (inline-expansion name)
    530530                  (jvm::generate-inline-expansion block-name
    531                                                   lambda-list body))
     531                                                  lambda-list
     532                                                  (append decls body)))
    532533            (output-form `(setf (inline-expansion ',name)
    533534                                ',(inline-expansion name))))))
  • trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp

    r13533 r14067  
    4949It can work either per-function (no args provided) or per-call."
    5050  (if args-p
    51       (expand-function-call-inline nil lambda-list
    52                                    (copy-tree `((block ,name ,@body)))
    53                                    args)
     51      (multiple-value-bind
     52            (body decls)
     53          (parse-body body)
     54        (expand-function-call-inline nil lambda-list
     55                                     ;; the forms below get wrapped
     56                                     ;; in a LET, making the decls
     57                                     ;; part of the decls of the LET.
     58                                     (copy-tree `(,@decls (block ,name ,@body)))
     59                                     args))
    5460      (cond ((intersection lambda-list
    5561                           '(&optional &rest &key &allow-other-keys &aux)
     
    5763             nil)
    5864            (t
    59              (setf body (copy-tree body))
    60              (list 'LAMBDA lambda-list
    61                    (list* 'BLOCK name body))))))
     65             (multiple-value-bind
     66                   (body decls)
     67                 (parse-body body)
     68               (setf body (copy-tree body))
     69               `(lambda ,lambda-list ,@decls
     70                        (block ,name ,@body)))))))
    6271
    6372
Note: See TracChangeset for help on using the changeset viewer.