(syntax-rules ()
([_ <form> (<val> ...)]
(let* ((expected (list 'values <val> ...))
- (error:handle [cute error:broken-seal '<form> expected]))
+ (error:handle [cute error:broken-seal '<form> expected <>]))
(call-and-catch <form>
(lambda args
(unless (equal? args (cdr expected))
([_ <form> (<val> ...)]
(let* ((expected (list 'throw <val> ...))
(error:handle [cute error:broken-seal '<form>
- (append expected '(....))]))
+ (append expected '(....)) <>]))
(call-and-catch <form>
(lambda args
(error:handle (cons 'values args)))
(error:handle (cons 'throw throw-args)))))))))
(define-syntax seal-clause
- (syntax-rules (=> !--> ***)
+ (syntax-rules (=> !--> *** *+* *!*)
([_ f <args> ... *** <val>]
(seal-clause-expect-values (f <args> ...) (<val>)))
([_ f <args> ... *+* <val>]
(seal-clause-expect-values <form> (<val> ...)))
([_ f <form> !--> <val> ...]
(seal-clause-expect-throw <form> (<val> ...)))
+ ([_ f <args> ... *!* <val>]
+ (seal-clause-expect-throw (f <args> ...) ('<val>)))
([_ f <form>]
(seal-clause-expect-values <form> (#t)))))