Correctly typecheck all subelements of vector literals.

Closes PR 14184.

original commit: cbe1b532795819d45c9bc8ccbaf1507c21b01649
This commit is contained in:
Eric Dobson 2013-11-20 21:23:00 -08:00
parent 70995fa7b0
commit a9fc827be7
2 changed files with 6 additions and 3 deletions

View File

@ -8,7 +8,8 @@
(only-in (infer infer) restrict)
(utils stxclass-util)
syntax/parse
unstable/function)
unstable/function
unstable/sequence)
(import)
(export tc-literal^)
@ -95,8 +96,8 @@
[(HeterogeneousVector: ts)
(make-HeterogeneousVector
(for/list ([l (in-vector (syntax-e #'i))]
[t (in-list ts)])
(check-below (tc-literal l t) t)))]
[t (in-sequence-forever (in-list ts) #f)])
(cond-check-below (tc-literal l t) t)))]
[_ (make-HeterogeneousVector (for/list ([l (in-vector (syntax-e #'i))])
(generalize (tc-literal l #f))))])]
[(~var i (3d hash?))

View File

@ -311,6 +311,8 @@
[tc-e (void 3 4) -Void]
[tc-e (void #t #f '(1 2 3)) -Void]
[tc-e/t #() (make-HeterogeneousVector (list))]
[tc-err #(3) #:expected (ret (make-HeterogeneousVector (list -Integer -Integer)))]
[tc-err #(3 4 5) #:expected (ret (make-HeterogeneousVector (list -Integer -Integer)))]
[tc-e/t #(3 4 5) (make-HeterogeneousVector (list -Integer -Integer -Integer))]
[tc-e/t '(2 3 4) (-lst* -PosByte -PosByte -PosByte)]
[tc-e/t '(2 3 #t) (-lst* -PosByte -PosByte (-val #t))]