From 0ecdc4acab53c4c91bb8e717d5a8fec6ba1c91f4 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Tue, 22 Apr 2008 22:05:34 +0000 Subject: [PATCH] delay type error messages for type parsing. svn: r9410 original commit: 029e4eb86eeea75b3d2217e4c1c6948f88a1ba73 --- collects/typed-scheme/private/parse-type.ss | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/collects/typed-scheme/private/parse-type.ss b/collects/typed-scheme/private/parse-type.ss index 33330dee..f1999a76 100644 --- a/collects/typed-scheme/private/parse-type.ss +++ b/collects/typed-scheme/private/parse-type.ss @@ -49,9 +49,10 @@ [(Instance t) (eq? (syntax-e #'Instance) 'Instance) (let ([v (parse-type #'t)]) - (unless (or (Mu? v) (Class? v) (Union? v)) - (tc-error "Argument to Instance must be a class type, got ~a" v)) - (make-Instance v))] + (if (or (Mu? v) (Class? v) (Union? v)) + (begin (tc-error/delayed "Argument to Instance must be a class type, got ~a" v) + (make-Instance (Un))) + (make-Instance v)))] [(Tuple ts ...) (or (eq? (syntax-e #'Tuple) 'Tuple) (eq? (syntax-e #'Tuple) 'List)) @@ -165,7 +166,8 @@ (add-type-name-reference #'id) (make-Name #'id)] [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")] [(Opaque . rest) (eq? (syntax-e #'Opaque) 'Opqaue) (tc-error "Opaque: bad syntax")]