X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdefcombin.lisp;h=c4dc44981d0e36f208ef310bc5b3d4a95f4115f0;hb=54da325f13fb41669869aea688ae195426c0e231;hp=711696fbb27b9c6af1ac26aef368d4f6d2535c6d;hpb=444d2072bc52e60a41af62ee22e343e76109212f;p=sbcl.git diff --git a/src/pcl/defcombin.lisp b/src/pcl/defcombin.lisp index 711696f..c4dc449 100644 --- a/src/pcl/defcombin.lisp +++ b/src/pcl/defcombin.lisp @@ -324,7 +324,12 @@ (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. + "~@"))) + cond-clauses)) (multiple-value-bind (name tests description order required) (parse-method-group-specifier method-group-specifier) (declare (ignore description)) @@ -432,7 +437,7 @@ (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