Skip to content

RESTART-CASE argument parsing too eager for keywords

Describe the problem here.

> (restart-case
    t
  (retry ()
    :retried))

Condition of type: SIMPLE-PROGRAM-ERROR
In form
(RESTART-CASE T (RETRY NIL :RETRIED))
Unknown keyword :RETRIED

Apart from "leading" :REPORT, :TEST, and :INTERACTIVE, RESTART-CASE should treat keywords as part of FORM* in the CLHS description.

     VERSION "20.4.24"
      VCS-ID "UNKNOWN"
          OS "Linux"
  OS-VERSION "5.10.46-5rodete1-amd64"
MACHINE-TYPE "x86_64"
    FEATURES (:QUICKLISP :ASDF-PACKAGE-SYSTEM :ASDF3.1 :ASDF3 :ASDF2 :ASDF
              :OS-UNIX :NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :WALKER :CDR-1
              :CDR-5 :LINUX :FORMATTER :CDR-7 :ECL-WEAK-HASH :LITTLE-ENDIAN
              :ECL-READ-WRITE-LOCK :LONG-LONG :UINT64-T :UINT32-T :UINT16-T
              :COMPLEX-FLOAT :LONG-FLOAT :UNICODE :DFFI :CLOS-STREAMS
              :CMU-FORMAT :UNIX :ECL-PDE :DLOPEN :CLOS :THREADS :BOEHM-GC
              :ANSI-CL :COMMON-LISP :FLOATING-POINT-EXCEPTIONS
              :IEEE-FLOATING-POINT :PACKAGE-LOCAL-NICKNAMES :CDR-14
              :PREFIXED-API :FFI :X86_64 :COMMON :ECL)