fix use of in-producer outside of for loops

- make-do-sequence was giving producer fn an argument when none was expected

Closes PR 13986
This commit is contained in:
Stephen Chang 2013-08-29 17:25:18 -04:00
parent d5c2443c05
commit 6e42423a2c
2 changed files with 4 additions and 2 deletions

View File

@ -105,7 +105,9 @@
(test-sequence [(1 2 3 4)] (for/list ([x (in-producer (counter))] #:break (= x 5)) x))
(test-sequence [(1 2 3 4)] (for/list ([x (in-producer (counter) 5)]) x))
(test-sequence [(1/2 1 3/2 2 5/2 3 7/2 4 9/2)]
(for/list ([x (in-producer (counter) 5 1/2)]) x)))
(for/list ([x (in-producer (counter) 5 1/2)]) x))
;; test in-producer outside of for loops
(test 6 sequence-ref (in-producer (counter)) 5))
(test-sequence [(1 2 3 4 5)]
(parameterize ([current-input-port (open-input-string "1 2 3\n4 5")])

View File

@ -1051,7 +1051,7 @@
(case-lambda
[(producer)
;; simple stop-less version
(make-do-sequence (lambda () (values producer void (void) #f #f #f)))]
(make-do-sequence (lambda () (values (λ _ (producer)) void (void) #f #f #f)))]
[(producer stop . more)
(define produce!
(if (null? more)