Ignore:
Timestamp:
05/22/12 13:39:13 (9 years ago)
Author:
Mark Evenson
Message:

Fixes ticket #199: CL-METHOD failure for &AUX arguments.

DEFGENERIC specified with &AUX arguments now signals an error.

Removed badly conceived BUGS.AUX.1 test which blew up the stack due to
recursively referencing itself in the &AUX init form.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/clos.lisp

    r13923 r13939  
    14041404    (setf options (nreverse options)
    14051405          methods (nreverse methods))
     1406    ;;; Since DEFGENERIC currently shares its argument parsing with
     1407    ;;; DEFMETHOD, we perform this check here.
     1408    (when (find '&aux lambda-list)
     1409      (error 'program-error
     1410             :format-control "&AUX is not allowed in a generic function lambda list: ~S"
     1411             :format-arguments (list lambda-list)))
    14061412    `(prog1
    14071413       (%defgeneric
     
    19821988            (exact (null (intersection lambda-list
    19831989                                       '(&rest &optional &key
    1984                                          &allow-other-keys &aux)))))
    1985        (if exact
     1990                                         &allow-other-keys))))
     1991            (no-aux (null (some
     1992                           (lambda (method)
     1993                             (find '&aux (std-slot-value method 'sys::lambda-list)))
     1994                           (sys:%generic-function-methods gf)))))
     1995       (if (and exact
     1996                no-aux)
    19861997           (cond
    19871998             ((= number-required 1)
Note: See TracChangeset for help on using the changeset viewer.