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))]