Correctly typecheck all subelements of vector literals.
Closes PR 14184.
This commit is contained in:
parent
53ce3b7b96
commit
cbe1b53279
|
@ -8,7 +8,8 @@
|
||||||
(only-in (infer infer) restrict)
|
(only-in (infer infer) restrict)
|
||||||
(utils stxclass-util)
|
(utils stxclass-util)
|
||||||
syntax/parse
|
syntax/parse
|
||||||
unstable/function)
|
unstable/function
|
||||||
|
unstable/sequence)
|
||||||
|
|
||||||
(import)
|
(import)
|
||||||
(export tc-literal^)
|
(export tc-literal^)
|
||||||
|
@ -95,8 +96,8 @@
|
||||||
[(HeterogeneousVector: ts)
|
[(HeterogeneousVector: ts)
|
||||||
(make-HeterogeneousVector
|
(make-HeterogeneousVector
|
||||||
(for/list ([l (in-vector (syntax-e #'i))]
|
(for/list ([l (in-vector (syntax-e #'i))]
|
||||||
[t (in-list ts)])
|
[t (in-sequence-forever (in-list ts) #f)])
|
||||||
(check-below (tc-literal l t) t)))]
|
(cond-check-below (tc-literal l t) t)))]
|
||||||
[_ (make-HeterogeneousVector (for/list ([l (in-vector (syntax-e #'i))])
|
[_ (make-HeterogeneousVector (for/list ([l (in-vector (syntax-e #'i))])
|
||||||
(generalize (tc-literal l #f))))])]
|
(generalize (tc-literal l #f))))])]
|
||||||
[(~var i (3d hash?))
|
[(~var i (3d hash?))
|
||||||
|
|
|
@ -311,6 +311,8 @@
|
||||||
[tc-e (void 3 4) -Void]
|
[tc-e (void 3 4) -Void]
|
||||||
[tc-e (void #t #f '(1 2 3)) -Void]
|
[tc-e (void #t #f '(1 2 3)) -Void]
|
||||||
[tc-e/t #() (make-HeterogeneousVector (list))]
|
[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 #(3 4 5) (make-HeterogeneousVector (list -Integer -Integer -Integer))]
|
||||||
[tc-e/t '(2 3 4) (-lst* -PosByte -PosByte -PosByte)]
|
[tc-e/t '(2 3 4) (-lst* -PosByte -PosByte -PosByte)]
|
||||||
[tc-e/t '(2 3 #t) (-lst* -PosByte -PosByte (-val #t))]
|
[tc-e/t '(2 3 #t) (-lst* -PosByte -PosByte (-val #t))]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user