File: multiple-values.scm

package info (click to toggle)
chicken 5.3.0-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 32,892 kB
  • sloc: ansic: 580,083; lisp: 71,987; tcl: 1,445; sh: 588; makefile: 60
file content (22 lines) | stat: -rw-r--r-- 656 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(define-syntax assert-fail
  (syntax-rules ()
    ((_ exp)
     (assert (handle-exceptions ex #t exp #f)))))

(define (f x) #t)

;; Relaxed cases
(assert (f (values 1 2 3)))
(assert-fail (call/cc (lambda (k) (k 1 2 3)))) ; For now it should fail, see #1601

;; Strict cases
(assert-fail (call-with-values (lambda () (values 1 2 3)) f))
(assert-fail
  (call-with-values
    (lambda () (call/cc (lambda (k) (k 1 2 3))))
    f))

;; Sanity check for strict cases with correct argument count
(assert (call-with-values (lambda () (values 1)) f))
(assert (call-with-values (lambda () 1) f))
(assert (call-with-values (lambda () (call/cc (lambda (k) (k 1)))) f))