(method-group-specifiers declarations real-body)
(let (names specializer-caches cond-clauses required-checks order-cleanups)
(let ((nspecifiers (length method-group-specifiers)))
- (dolist (method-group-specifier method-group-specifiers)
+ (dolist (method-group-specifier method-group-specifiers
+ (push `(t (return-from .long-method-combination-function.
+ `(invalid-method-error , .method.
+ "~@<is applicable, but does not belong ~
+ to any method group~@:>")))
+ cond-clauses))
(multiple-value-bind (name tests description order required)
(parse-method-group-specifier method-group-specifier)
(declare (ignore description))
:format-arguments (list ',name))))
required-checks))
(loop (unless (and (constantp order)
- (neq order (setq order (eval order))))
+ (neq order (setq order
+ (constant-form-value order))))
(return t)))
(push (cond ((eq order :most-specific-first)
`(setq ,name (nreverse ,name)))
(let ((intercept-rebindings
(let (rebindings)
(dolist (arg args-lambda-list (nreverse rebindings))
- (unless (member arg lambda-list-keywords)
+ (unless (member arg lambda-list-keywords :test #'eq)
(typecase arg
(symbol (push `(,arg ',arg) rebindings))
(cons