From be4b0a915839b514255f968e43cecbaab037e7ba Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Fri, 10 Feb 2012 17:39:05 -0500 Subject: [PATCH] Make inference understand the relationship between `Vector' and `Vectorof'. Closes PR 12495. original commit: 4d21ab10194df181e697810bdbf303f2de4e8ca7 --- collects/tests/typed-racket/unit-tests/typecheck-tests.rkt | 3 +++ collects/typed-racket/infer/infer-unit.rkt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt index db106b70..8dd3cfdc 100644 --- a/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-racket/unit-tests/typecheck-tests.rkt @@ -1395,6 +1395,9 @@ (go first second third fourth fifth sixth seventh eighth ninth tenth)) (-val 1)] + + [tc-e (vector-append #(1) #(2)) + (-vec -Integer)] ) (test-suite "check-type tests" diff --git a/collects/typed-racket/infer/infer-unit.rkt b/collects/typed-racket/infer/infer-unit.rkt index 719aec1b..e9bc2f24 100644 --- a/collects/typed-racket/infer/infer-unit.rkt +++ b/collects/typed-racket/infer/infer-unit.rkt @@ -406,6 +406,9 @@ (cg t t*)))] [((HeterogenousVector: ts) (HeterogenousVector: ts*)) (cset-meet (cgen/list V X Y ts ts*) (cgen/list V X Y ts* ts))] + [((HeterogenousVector: ts) (Vector: s)) + (define ts* (map (λ _ s) ts)) ;; invariant, everything has to match + (cset-meet (cgen/list V X Y ts ts*) (cgen/list V X Y ts* ts))] [((HeterogenousVector: ts) (Sequence: (list t*))) (cset-meet* (for/list ([t (in-list ts)]) (cg t t*)))]