From 5949a60cf7fe1a3f708d4b19d028d83ecbb818fd Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Mon, 30 Mar 2009 12:51:02 +0000 Subject: [PATCH] fix some small bugs svn: r14352 original commit: ebdd60a3a3cbdc7904f71c93316379caf866afdf --- collects/typed-scheme/env/type-environments.ss | 11 +++++++---- collects/typed-scheme/typecheck/tc-expr-unit.ss | 4 ++-- collects/typed-scheme/typecheck/tc-new-if.ss | 11 ++++++----- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/collects/typed-scheme/env/type-environments.ss b/collects/typed-scheme/env/type-environments.ss index a5cf6e46..1c9bca95 100644 --- a/collects/typed-scheme/env/type-environments.ss +++ b/collects/typed-scheme/env/type-environments.ss @@ -1,10 +1,14 @@ #lang scheme/base +(require scheme/contract + (prefix-in r: "../utils/utils.ss") + scheme/match + (except-in (r:utils tc-utils) make-env)) + (provide current-tvars extend env? lookup - make-empty-env extend-env extend/values dotted-env @@ -15,9 +19,8 @@ env-keys+vals with-dotted-env/extend) -(require (prefix-in r: "../utils/utils.ss")) -(require scheme/match - (except-in (r:utils tc-utils) make-env)) +(provide/contract [make-empty-env ((-> any/c any/c any/c) . -> . env?)] + []) ;; eq? has the type of equal?, and l is an alist (with conses!) (define-struct env (eq? l)) diff --git a/collects/typed-scheme/typecheck/tc-expr-unit.ss b/collects/typed-scheme/typecheck/tc-expr-unit.ss index ae1ebf76..328e373b 100644 --- a/collects/typed-scheme/typecheck/tc-expr-unit.ss +++ b/collects/typed-scheme/typecheck/tc-expr-unit.ss @@ -114,8 +114,8 @@ ;; typecheck an expression, but throw away the effect ;; tc-expr/t : Expr -> Type (define (tc-expr/t e) (match (tc-expr e) - [(tc-result: t _ _) t] - [t (int-err "tc-expr returned ~a, not a tc-result, for ~a" t (syntax->datum e))])) + [(tc-result1: t _ _) t] + [t (int-err "tc-expr returned ~a, not a single tc-result, for ~a" t (syntax->datum e))])) (define (tc-expr/check/t e t) (match (tc-expr/check e t) diff --git a/collects/typed-scheme/typecheck/tc-new-if.ss b/collects/typed-scheme/typecheck/tc-new-if.ss index 95b70021..dcd423df 100644 --- a/collects/typed-scheme/typecheck/tc-new-if.ss +++ b/collects/typed-scheme/typecheck/tc-new-if.ss @@ -21,19 +21,20 @@ (define (tc/if-twoarm tst thn els [expected #f]) (define (tc e) (if expected (tc-expr/check e expected) (tc-expr e))) (match (tc-expr tst) - [(list (tc-result: _ (and f1 (FilterSet: fs+ fs-)) _)) + [(tc-result1: _ (and f1 (FilterSet: fs+ fs-)) _) (match-let ([(tc-results: ts fs2 _) (with-lexical-env (env+ (lexical-env) fs+) (tc thn))] [(tc-results: us fs3 _) (with-lexical-env (env+ (lexical-env) fs-) (tc els))]) ;; if we have the same number of values in both cases (cond [(= (length ts) (length us)) - (for/list ([t ts] [u us] [f2 fs2] [f3 fs3]) - (ret (Un t u) (combine-filter f1 f2 f2)))] + (ret (for/list ([t ts] [u us]) (Un t u)) + (for/list ([f2 fs2] [f3 fs3]) + (combine-filter f1 f2 f2)))] [else - (tc-error/expr #:ret (ret Err) + (tc-error/expr #:return (ret Err) "Expected the same number of values from both branches of if expression, but got ~a and ~a" (length ts) (length us))]))] [(tc-results: t _ _) - (tc-error/expr #:ret (ret (or expected Err)) + (tc-error/expr #:return (ret (or expected Err)) "Test expression expects one value, given ~a" t)])) (define tc/if-twoarm/check tc/if-twoarm) \ No newline at end of file