From bf8b4e80801c10012e2d337d347803cd08d900b4 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Thu, 13 May 2010 13:37:24 -0400 Subject: [PATCH] Don't generate extra filters unless they're useful. original commit: 814c02664ee7892af26f6c0d0b8d90cbf55bdc4a --- collects/typed-scheme/typecheck/tc-subst.rkt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/collects/typed-scheme/typecheck/tc-subst.rkt b/collects/typed-scheme/typecheck/tc-subst.rkt index 02c47739..4377abee 100644 --- a/collects/typed-scheme/typecheck/tc-subst.rkt +++ b/collects/typed-scheme/typecheck/tc-subst.rkt @@ -26,10 +26,15 @@ (d/c (subst-filter-set fs k o polarity [t #f]) (->* ((or/c FilterSet? NoFilter?) name-ref/c Object? boolean?) ((or/c #f Type/c)) FilterSet?) (define extra-filter (if t (make-TypeFilter t null k) -top)) + (define (add-extra-filter f) + (define f* (-and extra-filter f)) + (match f* + [(Bot:) f*] + [_ f])) (match fs [(FilterSet: f+ f-) - (combine (subst-filter (-and extra-filter f+) k o polarity) - (subst-filter (-and extra-filter f-) k o polarity))] + (combine (subst-filter (add-extra-filter f+) k o polarity) + (subst-filter (add-extra-filter f-) k o polarity))] [_ (-FS -top -top)])) (d/c (subst-type t k o polarity)