Reset after reporting errors.

svn: r10047
This commit is contained in:
Sam Tobin-Hochstadt 2008-05-30 16:19:47 +00:00
parent 8595bae336
commit a67344ddf2

View File

@ -50,15 +50,18 @@
(define-struct err (msg stx) #:prefab) (define-struct err (msg stx) #:prefab)
(define (report-all-errors) (define (report-all-errors)
(define (reset!) (set! delayed-errors null))
(match (reverse delayed-errors) (match (reverse delayed-errors)
[(list) (void)] [(list) (void)]
[(list (struct err (msg stx))) [(list (struct err (msg stx)))
(reset!)
(raise-typecheck-error msg stx)] (raise-typecheck-error msg stx)]
[l [l
(let ([stxs (let ([stxs
(for/list ([e (reverse delayed-errors)]) (for/list ([e (reverse delayed-errors)])
(sync (thread (lambda () (raise-typecheck-error (err-msg e) (err-stx e))))) (sync (thread (lambda () (raise-typecheck-error (err-msg e) (err-stx e)))))
(err-stx e))]) (err-stx e))])
(reset!)
(unless (null? stxs) (unless (null? stxs)
(raise-typecheck-error "Errors encountered" (apply append stxs))))])) (raise-typecheck-error "Errors encountered" (apply append stxs))))]))