Correctly typecheck all subelements of vector literals.
Closes PR 14184. original commit: cbe1b532795819d45c9bc8ccbaf1507c21b01649
This commit is contained in:
parent
70995fa7b0
commit
a9fc827be7
|
@ -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?))
|
||||
|
|
|
@ -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))]
|
||||
|
|
Loading…
Reference in New Issue
Block a user