Resolve names in overlap in TR. Closes PR11392.

original commit: 53ce20d3f9edc9d405a33a8fb2e031b67dad7a09
This commit is contained in:
Eric Dobson 2011-09-04 21:49:10 -07:00 committed by Sam Tobin-Hochstadt
parent b911bd4d36
commit 536ed6c037
2 changed files with 16 additions and 0 deletions

View File

@ -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"))

View File

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