Ignore:
Timestamp:
Oct 31, 2008, 1:52:57 PM (13 years ago)
Author:
gz
Message:

Backport compiler source location changes from trunk, mostly reorg and move file-compiler stuff out of the compiler, but also a fix to record a source note for inner functions

File:
1 edited

Legend:

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

    r11267 r11279  
    3030      (setq typespec (nx-target-type (type-specifier ctype)))))
    3131  (let* ((*nx-form-type* typespec)
    32          (transformed (nx-transform form env))
    33          (aform (nx1-transformed-form (if (and (consp transformed)
    34                                                (eq (car transformed) 'the))
    35                                         form
    36                                         transformed) env form)))
    37     ;; Doing this in this bizarre way may be a little easier
    38     ;; to bootstrap.
    39     (if (nx-the-typechecks env)
    40       (make-acode
    41        (%nx1-operator typed-form)
    42        typespec
    43        aform
    44        t)
    45       (make-acode
    46        (%nx1-operator typed-form)
    47        typespec
    48        aform))))
     32         (transformed (nx-transform form env)))
     33    (when (and (consp transformed)
     34               (eq (car transformed) 'the))
     35      (setq transformed form))
     36    (make-acode
     37     (%nx1-operator typed-form)
     38     typespec
     39     (nx1-transformed-form transformed env)
     40     (nx-the-typechecks env))))
    4941
    5042(defnx1 nx1-struct-ref struct-ref (&whole whole structure offset)
     
    14781470                    (nx-error "Can't funcall macro function ~s ." name)))
    14791471              (and (consp name)
    1480                    (or (eq (%car name) 'lambda)
     1472                   (or (when (eq (%car name) 'lambda)
     1473                         (nx-note-source-transformation func name)
     1474                         t)
    14811475                       (setq name (nx-need-function-name name))))))
    14821476      (nx1-form (cons name args))  ; This picks up call-next-method evil.
     
    15551549            (multiple-value-bind (body decls)
    15561550                                 (parse-body flet-function-body env)
    1557               (let ((func (make-afunc)))
     1551              (let ((func (make-afunc))
     1552                    (expansion `(lambda ,lambda-list
     1553                                  ,@decls
     1554                                  (block ,(if (consp funcname) (%cadr funcname) funcname)
     1555                                    ,@body))))
     1556                (nx-note-source-transformation def expansion)
    15581557                (setf (afunc-environment func) env
    1559                       (afunc-lambdaform func) `(lambda ,lambda-list
    1560                                                      ,@decls
    1561                                                      (block ,(if (consp funcname) (%cadr funcname) funcname)
    1562                                                        ,@body)))
     1558                      (afunc-lambdaform func) expansion)
    15631559                (push func funcs)
    15641560                (when (and *nx-next-method-var*
     
    16511647                                   (block ,blockname
    16521648                                     ,@body))))
     1649                (nx-note-source-transformation def expansion)
    16531650                (setf (afunc-lambdaform func) expansion
    16541651                      (afunc-environment func) env)
Note: See TracChangeset for help on using the changeset viewer.