Changeset 15282


Ignore:
Timestamp:
Mar 28, 2012, 8:56:53 PM (7 years ago)
Author:
gb
Message:

Check for undefined functions while processing (FUNCTION <symbol>),
not while processing calls to a function used to implement that
(those calls may be effectively NOTINLINE.)

Fixes ticket:929.

File:
1 edited

Legend:

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

    r15079 r15282  
    14271427             (while (setq fn (assq arg *nx-synonyms*))
    14281428               (setq arg (%cdr fn)))
     1429             (let* ((env *nx-lexical-environment*))
     1430                (unless (or (nx1-find-call-def arg env)
     1431                    (find-ftype-decl arg env)
     1432                    (eq arg *nx-global-function-name*))
     1433                  (nx1-whine :undefined-function arg)))
    14291434             (nx1-form context `(%function ',arg)))))
    14301435        ((setf-function-name-p arg)
     
    14751480             (setq symbol (cadr sym))
    14761481             (symbolp symbol))
    1477       (let ((env *nx-lexical-environment*))
    1478         (unless (or (nx1-find-call-def symbol env)
    1479                     (find-ftype-decl symbol env)
    1480                     (eq symbol *nx-global-function-name*))
    1481           (nx1-whine :undefined-function symbol))
    1482         (make-acode (%nx1-default-operator) symbol))
     1482      (make-acode (%nx1-default-operator) symbol)
    14831483      (make-acode (%nx1-operator call) (nx1-immediate context '%function) (list nil (list sym))))))
    14841484
Note: See TracChangeset for help on using the changeset viewer.