Add VM test for call/cc in non-tail position
[bpt/guile.git] / test-suite / vm / t-call-cc.scm
CommitLineData
46d2d6f8
AW
1(let ((set-counter2 #f))
2 (define (get-counter2)
3 (call/cc
4 (lambda (k)
5 (set! set-counter2 k)
6 1)))
7 (define (loop counter1)
8 (let ((counter2 (get-counter2)))
9 (set! counter1 (1+ counter1))
10 (cond ((not (= counter1 counter2))
11 (error "bad call/cc behaviour" counter1 counter2))
12 ((> counter1 10)
13 #t)
14 (else
15 (set-counter2 (1+ counter2))))))
16 (loop 0))
13f1461c
AR
17
18(let* ((next #f)
19 (counter 0)
20 (result (call/cc
21 (lambda (k)
22 (set! next k)
23 1))))
24 (set! counter (+ 1 counter))
25 (cond ((not (= counter result))
26 (error "bad call/cc behaviour" counter result))
27 ((> counter 10)
28 #t)
29 (else
30 (next (+ 1 counter)))))