Add annotation to test.
Fix default case for `vector-set!' original commit: 21b5c25c90a323d443b9611d9c0d30d30afb7dea
This commit is contained in:
parent
479db80e36
commit
7b401c4e80
|
@ -1,6 +1,6 @@
|
|||
#lang typed/scheme
|
||||
|
||||
(ann (vector-ref #(1 foo 3) 0) Integer)
|
||||
(ann (vector-ref (ann #(1 foo 3) (Vector Integer Symbol Any)) 0) Integer)
|
||||
|
||||
(define: x : (Vector Number String Symbol) (vector 1 "foo" 'bar))
|
||||
|
||||
|
|
|
@ -456,7 +456,7 @@
|
|||
(tc-error/expr #:stx #'e #:return (or expected (ret (Un))) "index ~a too large for vector ~a" ival t)]))]
|
||||
[v-ty
|
||||
(let ([arg-tys (list v-ty e-t)])
|
||||
(tc/funapp #'op #'args (single-value #'op) arg-tys expected))]))]
|
||||
(tc/funapp #'op #'(v e) (single-value #'op) arg-tys expected))]))]
|
||||
[(#%plain-app (~and op (~literal vector-set!)) v e:expr val:expr)
|
||||
(let ([e-t (single-value #'e)])
|
||||
(match (single-value #'v)
|
||||
|
@ -475,14 +475,17 @@
|
|||
(check-below (ret -Void) expected)
|
||||
(ret -Void))]
|
||||
[(not (and (integer? ival) (exact? ival)))
|
||||
(single-value #'val)
|
||||
(tc-error/expr #:stx #'e #:return (or expected (ret (Un))) "expected exact integer for vector index, but got ~a" ival)]
|
||||
[(< ival 0)
|
||||
(single-value #'val)
|
||||
(tc-error/expr #:stx #'e #:return (or expected (ret (Un))) "index ~a too small for vector ~a" ival t)]
|
||||
[(not (<= ival (sub1 (length es))))
|
||||
(single-value #'val)
|
||||
(tc-error/expr #:stx #'e #:return (or expected (ret (Un))) "index ~a too large for vector ~a" ival t)]))]
|
||||
[v-ty
|
||||
(let ([arg-tys (list v-ty e-t)])
|
||||
(tc/funapp #'op #'args (single-value #'op) arg-tys expected))]))]
|
||||
(let ([arg-tys (list v-ty e-t (single-value #'val))])
|
||||
(tc/funapp #'op #'(v e val) (single-value #'op) arg-tys expected))]))]
|
||||
[(#%plain-app (~and op (~literal vector)) args:expr ...)
|
||||
(match expected
|
||||
[(tc-result1: (Vector: t))
|
||||
|
|
Loading…
Reference in New Issue
Block a user