sensible handling of literal vectors

original commit: ff36a6e8d1595cd0ee0c495efe240ebc23707419
This commit is contained in:
Sam Tobin-Hochstadt 2010-05-13 18:38:48 -04:00
parent 6f16d9e2d6
commit 479db80e36
2 changed files with 4 additions and 3 deletions

View File

@ -3,6 +3,7 @@
(ann (vector 1 2 3) (U String (Vector Integer Integer Integer) (Vectorof Number)))
(define v (ann (vector 1 2 3) (Vector Integer Integer Integer)))
(define v* (ann #(1 2 3) (Vector Integer Integer Integer)))
(vector-ref v 2)
(vector-ref v 0)

View File

@ -70,9 +70,9 @@
[t (in-list ts)])
(tc-literal l t)))]
;; errors are handled elsewhere
[_ (make-HeterogenousVector
(for/list ([l (in-vector (syntax-e #'i))])
(tc-literal l #f)))])]
[_ (make-Vector (apply Un
(for/list ([l (syntax-e #'i)])
(tc-literal l #f))))])]
[(~var i (3d hash?))
(let* ([h (syntax-e #'i)]
[ks (hash-map h (lambda (x y) (tc-literal x)))]