fix syntax checking in for/vector

Closes #1308
This commit is contained in:
Matthew Flatt 2016-04-16 09:48:08 -06:00
parent 8fccc07259
commit a6e773f69b
2 changed files with 10 additions and 4 deletions

View File

@ -549,6 +549,8 @@
;; for/fold syntax checking
(syntax-test #'(for/fold () bad 1) #rx".*bad sequence binding clauses.*")
(syntax-test #'(for/vector ()) #rx".*missing body.*")
;; specific hash set iterators
(err/rt-test (for/sum ([x (in-immutable-set '(1 2))]) x)
exn:fail:contract?

View File

@ -1534,10 +1534,14 @@
(cond
[(null? exprs)
(if (null? post-kw)
(if (null? pre-kw)
(raise-syntax-error #f
"missing body"
stx)
(raise-syntax-error #f
(format "missing body form after ~a clause" (syntax-e (cadr pre-kw)))
stx
(cadr pre-kw))
(cadr pre-kw)))
(list (reverse pre-kw) (reverse post-kw)))]
[(memq (syntax-e (car exprs)) '(#:break #:final))
(if (pair? (cdr exprs))