From 2368290cdb88bbe88942afe551c2629391d7822e Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Fri, 5 Feb 2010 03:22:15 +0000 Subject: [PATCH] Test now that the generator is not in a running state when it's called. The previous problem was just a bug. svn: r17984 --- collects/scheme/generator.ss | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/collects/scheme/generator.ss b/collects/scheme/generator.ss index f209902b71..79a5939be1 100644 --- a/collects/scheme/generator.ss +++ b/collects/scheme/generator.ss @@ -64,16 +64,15 @@ (lambda () (begin body0 body ...)) ;; get here only on at the end of the generator (lambda rs - (set! state 'done) - (set! cont (lambda () (apply values rs))) + (set! cont (lambda () (set! state 'done) (apply values rs))) (cont)))))) (define (err [what "send a value to"]) (error 'generator "cannot ~a a ~a generator" what state)) (define generator (case-lambda - [() (if #t ; (memq state '(fresh suspended done)) - (begin (set! state 'running) (cont)) - (err "call"))] + [() (if (eq? state 'running) + (err "call") + (begin (set! state 'running) (cont)))] ;; yield-tag means return the state (see `generator-state' below) [(x) (cond [(eq? x yield-tag) state] [(memq state '(suspended running))