~ chicken-core (chicken-5) /tests/multiple-values.scm
Trap1(define-syntax assert-fail
2 (syntax-rules ()
3 ((_ exp)
4 (assert (handle-exceptions ex #t exp #f)))))
5
6(define (f x) #t)
7
8;; Relaxed cases
9(assert (f (values 1 2 3)))
10(assert-fail (call/cc (lambda (k) (k 1 2 3)))) ; For now it should fail, see #1601
11
12;; Strict cases
13(assert-fail (call-with-values (lambda () (values 1 2 3)) f))
14(assert-fail
15 (call-with-values
16 (lambda () (call/cc (lambda (k) (k 1 2 3))))
17 f))
18
19;; Sanity check for strict cases with correct argument count
20(assert (call-with-values (lambda () (values 1)) f))
21(assert (call-with-values (lambda () 1) f))
22(assert (call-with-values (lambda () (call/cc (lambda (k) (k 1)))) f))