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