Changeset 11806


Ignore:
Timestamp:
04/30/09 06:13:35 (14 years ago)
Author:
ehuelsmann
Message:

Remove compiler warning about non-constant initforms:
we support them now!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compiler-pass1.lisp

    r11805 r11806  
    378378  form)
    379379
    380 (defun validate-name-and-lambda-list (name lambda-list context)
     380(defun validate-function-name (name)
    381381  (unless (or (symbolp name) (setf-function-name-p name))
    382     (compiler-error "~S is not a valid function name." name))
    383   (when (or (memq '&optional lambda-list)
    384             (memq '&key lambda-list))
    385     (let ((state nil))
    386       (dolist (arg lambda-list)
    387         (cond ((memq arg lambda-list-keywords)
    388                (setf state arg))
    389               ((memq state '(&optional &key))
    390                (when (and (consp arg) (not (constantp (second arg))))
    391                  (compiler-unsupported
    392                   "~A: can't handle ~A argument with non-constant initform."
    393                   context
    394                   (if (eq state '&optional) "optional" "keyword")))))))))
    395 
    396 (defmacro with-local-functions-for-flet/labels
    397     (form local-functions-var lambda-name lambda-list-var name-var body-var body1 body2)
     382    (compiler-error "~S is not a valid function name." name)))
     383
     384(defmacro with-local-functions-for-flet/labels
     385    (form local-functions-var lambda-list-var name-var body-var body1 body2)
    398386  `(progn (incf (compiland-children *current-compiland*) (length (cadr ,form)))
    399387    (let ((*visible-variables* *visible-variables*)
     
    404392        (let ((,name-var (car definition))
    405393        (,lambda-list-var (cadr definition)))
    406     (validate-name-and-lambda-list ,name-var ,lambda-list-var ,lambda-name)
    407  
     394    (validate-function-name ,name-var)
    408395    (let* ((,body-var (cddr definition))
    409396           (compiland (make-compiland :name ,name-var
     
    575562(defun p1-flet (form)
    576563  (with-local-functions-for-flet/labels
    577       form local-functions 'FLET lambda-list name body
     564      form local-functions lambda-list name body
    578565      ((let ((local-function (make-local-function :name name
    579566             :compiland compiland)))
     
    602589(defun p1-labels (form)
    603590  (with-local-functions-for-flet/labels
    604       form local-functions 'LABELS lambda-list name body
     591      form local-functions lambda-list name body
    605592      ((let* ((variable (make-variable :name (gensym)))
    606593        (local-function (make-local-function :name name
Note: See TracChangeset for help on using the changeset viewer.