From 536ed6c037f43aa133a2699e4698d39b37a6ea23 Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Sun, 4 Sep 2011 21:49:10 -0700 Subject: [PATCH] Resolve names in overlap in TR. Closes PR11392. original commit: 53ce20d3f9edc9d405a33a8fb2e031b67dad7a09 --- collects/tests/typed-racket/succeed/pr11392.rkt | 12 ++++++++++++ collects/typed-racket/types/remove-intersect.rkt | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 collects/tests/typed-racket/succeed/pr11392.rkt diff --git a/collects/tests/typed-racket/succeed/pr11392.rkt b/collects/tests/typed-racket/succeed/pr11392.rkt new file mode 100644 index 00000000..78a832ab --- /dev/null +++ b/collects/tests/typed-racket/succeed/pr11392.rkt @@ -0,0 +1,12 @@ +#lang typed/racket +(struct: foo ((n : Number))) +(struct: bar ((n : Number))) + + +(define-type foobar (U foo bar)) +(define-predicate foobar? foobar) + +(: baz ((List) -> "two")) + +(define (baz x) + (if (foobar? x) 2 "two")) diff --git a/collects/typed-racket/types/remove-intersect.rkt b/collects/typed-racket/types/remove-intersect.rkt index 5101253e..bbf00415 100644 --- a/collects/typed-racket/types/remove-intersect.rkt +++ b/collects/typed-racket/types/remove-intersect.rkt @@ -26,6 +26,10 @@ [(list (Name: n) (Name: n*)) (or (free-identifier=? n n*) (overlap (resolve-once t1) (resolve-once t2)))] + [(list _ (Name: _)) + (overlap t1 (resolve-once t2))] + [(list (Name: _) _) + (overlap (resolve-once t1) t2)] [(list (? Mu?) _) (overlap (unfold t1) t2)] [(list _ (? Mu?)) (overlap t1 (unfold t2))]