delay type error messages for type parsing.

svn: r9410
This commit is contained in:
Sam Tobin-Hochstadt 2008-04-22 22:05:34 +00:00
parent f9a0378510
commit 029e4eb86e

View File

@ -49,9 +49,10 @@
[(Instance t) [(Instance t)
(eq? (syntax-e #'Instance) 'Instance) (eq? (syntax-e #'Instance) 'Instance)
(let ([v (parse-type #'t)]) (let ([v (parse-type #'t)])
(unless (or (Mu? v) (Class? v) (Union? v)) (if (or (Mu? v) (Class? v) (Union? v))
(tc-error "Argument to Instance must be a class type, got ~a" v)) (begin (tc-error/delayed "Argument to Instance must be a class type, got ~a" v)
(make-Instance v))] (make-Instance (Un)))
(make-Instance v)))]
[(Tuple ts ...) [(Tuple ts ...)
(or (eq? (syntax-e #'Tuple) 'Tuple) (or (eq? (syntax-e #'Tuple) 'Tuple)
(eq? (syntax-e #'Tuple) 'List)) (eq? (syntax-e #'Tuple) 'List))
@ -165,7 +166,8 @@
(add-type-name-reference #'id) (add-type-name-reference #'id)
(make-Name #'id)] (make-Name #'id)]
[else [else
(tc-error "unbound type ~a" (syntax-e #'id))])] (tc-error/delayed "unbound type ~a" (syntax-e #'id))
Univ])]
[(All . rest) (eq? (syntax-e #'All) 'All) (tc-error "All: bad syntax")] [(All . rest) (eq? (syntax-e #'All) 'All) (tc-error "All: bad syntax")]
[(Opaque . rest) (eq? (syntax-e #'Opaque) 'Opqaue) (tc-error "Opaque: bad syntax")] [(Opaque . rest) (eq? (syntax-e #'Opaque) 'Opqaue) (tc-error "Opaque: bad syntax")]