Make for raise better error message if binding clauses are bad.

Closes PR 13272.
This commit is contained in:
Eric Dobson 2015-03-26 21:29:01 -07:00 committed by Matthew Flatt
parent 8e22b22630
commit 29b1ac70df
2 changed files with 6 additions and 0 deletions

View File

@ -442,4 +442,7 @@
(err/rt-test (begin (for/fold ([x 1] [y 2]) ([i (in-range 10)]) 1) 1) #rx".*expected number of values not received.*") (err/rt-test (begin (for/fold ([x 1] [y 2]) ([i (in-range 10)]) 1) 1) #rx".*expected number of values not received.*")
(test 1 'one (begin (for/fold () () (values)) 1)) (test 1 'one (begin (for/fold () () (values)) 1))
;; for/fold syntax checking
(syntax-test #'(for/fold () bad 1) #rx".*bad sequence binding clauses.*")
(report-errs) (report-errs)

View File

@ -1325,6 +1325,9 @@
(if d (if d
(syntax-property r 'disappeared-use d) (syntax-property r 'disappeared-use d)
r)))] r)))]
[(_ [orig-stx . _] for-bind clauses . _)
(not (syntax->list #'clauses))
(raise-syntax-error #f "bad sequence binding clauses" #'orig-stx #'clauses)]
[(_ [orig-stx . _] . _) [(_ [orig-stx . _] . _)
(raise-syntax-error #f "bad syntax" #'orig-stx)])) (raise-syntax-error #f "bad syntax" #'orig-stx)]))