X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fmacros.lisp;h=935fe5b6cc05242c1fd4462ff2a4b90ed0021315;hb=7a2a31f9407a7da9d26cf1bc91c302461823719f;hp=7525fbfdf085f7b22b012d63c58d6caf967cfd95;hpb=a7a4ca961ef0f587a2549bd9433eef7ddb845ab7;p=sbcl.git diff --git a/src/code/macros.lisp b/src/code/macros.lisp index 7525fbf..935fe5b 100644 --- a/src/code/macros.lisp +++ b/src/code/macros.lisp @@ -261,6 +261,17 @@ invoked. In that case it will store into PLACE and start over." ,@forms) clauses)) (t + (when (and (eq name 'case) + (cdr cases) + (memq keyoid '(t otherwise))) + (error 'simple-reference-error + :format-control + "~@<~IBad ~S clause:~:@_ ~S~:@_~S allowed as the key ~ + designator only in the final otherwise-clause, not in a ~ + normal-clause. Use (~S) instead, or move the clause the ~ + correct position.~:@>" + :format-arguments (list 'case case keyoid keyoid) + :references `((:ansi-cl :macro case)))) (push keyoid keys) (check-clause (list keyoid)) (push `((,test ,keyform-value ',keyoid)