Make ... <: * case more correct.

original commit: ff8ed078d55637c5ba24ffd16731f7e799d11093
This commit is contained in:
Eric Dobson 2014-05-19 23:11:59 -07:00
parent f9352fa2a4
commit ff23359f9d
2 changed files with 6 additions and 1 deletions

View File

@ -324,7 +324,8 @@
(cgen V (cons dbound X) Y s-dty t-rest))
vars dbound)]
[else
(cgen/seq V X Y (seq ss (uniform-end (substitute Univ dbound s-dty))) t-seq)])]))
(extend-tvars (list dbound)
(cgen/seq (cons dbound V) X Y (seq ss (uniform-end s-dty)) t-seq))])]))
(define/cond-contract (cgen/arr V X Y s-arr t-arr)
((listof symbol?) (listof symbol?) (listof symbol?) arr? arr? . -> . (or/c #f cset?))

View File

@ -181,6 +181,10 @@
(infer-t (-lst -Symbol) (make-ListDots (-v b) 'b) #:indices '(b)
#:result [(make-ListDots (-v b) 'b) (-lst -Symbol)])
(infer-t (make-ListDots (-v b) 'b) (-lst Univ) #:indices '(b))
(infer-t (make-ListDots (-v a) 'a) (-lst Univ))
(infer-t (make-ListDots (-lst (-v a)) 'a) (-lst (-lst Univ)))
(infer-t (make-ListDots (-vec (-v a)) 'a) (-lst (-vec Univ)) #:fail)
(infer-t (make-ListDots (-v a) 'b) (make-ListDots -Symbol 'b) #:vars '(a))
(infer-t (make-ListDots (-v b) 'b) (make-ListDots -Symbol 'b) #:indices '(b))
(infer-t (make-ListDots -Symbol 'b) (make-ListDots (-v b) 'b) #:indices '(b))