X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fparse-lambda-list.lisp;h=2c30e85a9659c650b5b8b4dc17d85391656a170b;hb=422b88abf96f4842a3d0999cd3b80d96f5a153d6;hp=9628902b6f8c04268a0d946a8872c87786c26c6f;hpb=ce02ab2ecd9c6ae2e570abd8c93ebf3be55bbdad;p=sbcl.git diff --git a/src/compiler/parse-lambda-list.lisp b/src/compiler/parse-lambda-list.lisp index 9628902..2c30e85 100644 --- a/src/compiler/parse-lambda-list.lisp +++ b/src/compiler/parse-lambda-list.lisp @@ -25,7 +25,7 @@ ;;; 10. the &MORE context var; ;;; 11. the &MORE count var. ;;; -;;; The top-level lambda list syntax is checked for validity, but the +;;; The top level lambda list syntax is checked for validity, but the ;;; arg specifiers are just passed through untouched. If something is ;;; wrong, we use COMPILER-ERROR, aborting compilation to the last ;;; recovery point. @@ -68,7 +68,7 @@ (unless (member state '(:required :optional)) (compiler-error "misplaced &REST in lambda list: ~S" list)) (setq state :rest)) - (sb!c:&more + (&more (unless (member state '(:required :optional)) (compiler-error "misplaced &MORE in lambda list: ~S" list)) (setq morep t @@ -114,7 +114,9 @@ (compiler-error "found garbage in lambda list when expecting ~ a keyword: ~S" arg))))) - + (when (eq state :rest) + (compiler-error "&REST without rest variable")) + (values (required) (optional) restp rest keyp (keys) allowp (aux) morep more-context more-count))))