A variant of must-succeed that accepts multiple forms.
(must-succeed* form1 ... formN :with-output-off ... :check-expansion ...)
The
The forms may be followed by
Macro:
(defmacro must-succeed* (&rest args) (mv-let (erp forms options) (partition-rest-and-keyword-args args '(:with-output-off :check-expansion)) (if erp '(er hard? 'must-succeed* "The arguments of MUST-SUCCEED* must be zero or more forms ~ followed by the options :WITH-OUTPUT-OFF and :CHECK-EXPANSION.") (let ((with-output-off-pair (assoc :with-output-off options)) (check-expansion-pair (assoc :check-expansion options))) (cons 'must-succeed (cons (cons 'progn forms) (append (if with-output-off-pair (cons ':with-output-off (cons (cdr with-output-off-pair) 'nil)) nil) (if check-expansion-pair (cons ':check-expansion (cons (cdr check-expansion-pair) 'nil)) nil))))))))