From b4beabc977b7e0ce1c4c1363e779079d28c6198d Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Mon, 11 Feb 2013 08:26:04 -0800 Subject: [PATCH] Make tc-let do unions correctly. --- .../tests/typed-racket/unit-tests/typecheck-tests.rkt | 10 ++++++++++ collects/typed-racket/typecheck/tc-let-unit.rkt | 7 ++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt index 5d76922923..0f3bf4f5f8 100644 --- a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt @@ -611,6 +611,16 @@ [tc-e (letrec: ([x : Number (values 1)]) (add1 x)) N] + [tc-e (let () + (: complicated Boolean) + (define complicated #f) + (: undefined Undefined) + (define undefined (letrec: ((x : Undefined x)) x)) + (letrec: ((x : Undefined (if complicated undefined undefined)) + (y : Undefined (if complicated x undefined))) + y)) + -Undefined] + [tc-err (let ([x (add1 5)]) (set! x "foo") x)] diff --git a/collects/typed-racket/typecheck/tc-let-unit.rkt b/collects/typed-racket/typecheck/tc-let-unit.rkt index b289831f4a..e79fc24bd2 100644 --- a/collects/typed-racket/typecheck/tc-let-unit.rkt +++ b/collects/typed-racket/typecheck/tc-let-unit.rkt @@ -3,7 +3,7 @@ (require (rename-in "../utils/utils.rkt" [infer r:infer]) "signatures.rkt" "tc-metafunctions.rkt" "tc-subst.rkt" "check-below.rkt" - (types utils abbrev) + (types utils abbrev union) (private type-annotation parse-type) (env lexical-env type-alias-env global-env type-env-structs) (rep type-rep filter-rep object-rep) @@ -165,10 +165,7 @@ (s:member x safe-bindings bound-identifier=?)) l) types-from-user - (map (λ (x) (make-Union (if (type