Add check that effect lists have same length.

This commit is contained in:
Sam Tobin-Hochstadt 2008-07-07 17:04:09 -04:00
parent f9c91d6b8a
commit 8599321b57

View File

@ -105,6 +105,7 @@
[(_ _) (fail! t s)])) [(_ _) (fail! t s)]))
(define (cgen/eff/list V X ts ss) (define (cgen/eff/list V X ts ss)
(unless (= (length ts) (length ss)) (fail! ts ss))
(cset-meet* (for/list ([t ts] [s ss]) (cgen/eff V X t s)))) (cset-meet* (for/list ([t ts] [s ss]) (cgen/eff V X t s))))
(define (cgen/arr V X t-arr s-arr) (define (cgen/arr V X t-arr s-arr)
@ -287,7 +288,7 @@
(cg b1 b2*))] (cg b1 b2*))]
[((Poly: v1 b1) T) [((Poly: v1 b1) T)
(debug (cgen (append v1 V) X b1 T))] (cgen (append v1 V) X b1 T)]
#;[((PolyDots: (list v1 ... r1) b1) T) #;[((PolyDots: (list v1 ... r1) b1) T)
(let ([b1* (var-demote b1 (cons r1 v1))]) (let ([b1* (var-demote b1 (cons r1 v1))])
@ -484,4 +485,4 @@
(define (i s t r) (define (i s t r)
(infer/simple (list s) (list t) r)) (infer/simple (list s) (list t) r))
;(trace cgen/arr cgen #;cgen/list) ;(trace cgen/arr #;cgen #;cgen/list)