Clean up of tc-app.rkt.

This commit is contained in:
Eric Dobson 2012-06-15 21:19:48 -07:00 committed by Sam Tobin-Hochstadt
parent 779291c795
commit dd078dcb95

View File

@ -707,8 +707,7 @@
(ret (apply -lst* tys)))]))] (ret (apply -lst* tys)))]))]
;; special case for `list*' ;; special case for `list*'
[(#%plain-app list* . args) [(#%plain-app list* . args)
(match-let* ([(list last tys-r ...) (reverse (map tc-expr/t (syntax->list #'args)))] (match-let* ([(list tys ... last) (map tc-expr/t (syntax->list #'args))])
[tys (reverse tys-r)])
(ret (foldr make-Pair last tys)))] (ret (foldr make-Pair last tys)))]
;; special case for `reverse' to propagate expected type info ;; special case for `reverse' to propagate expected type info
[(#%plain-app (~or reverse k:reverse) arg) [(#%plain-app (~or reverse k:reverse) arg)
@ -748,6 +747,10 @@
(tc/let-values #'((x) ... (rst)) #`(fixed-args ... varg) #'body (tc/let-values #'((x) ... (rst)) #`(fixed-args ... varg) #'body
#'(let-values ([(x) fixed-args] ... [(rst) varg]) . body) #'(let-values ([(x) fixed-args] ... [(rst) varg]) . body)
expected)))] expected)))]
[else (tc/app/regular form expected)])))
(define (tc/app/regular form expected)
(syntax-parse form #:literals (#%plain-app)
[(#%plain-app f . args) [(#%plain-app f . args)
(let* ([f-ty (single-value #'f)]) (let* ([f-ty (single-value #'f)])
(match f-ty (match f-ty
@ -777,15 +780,3 @@
(define (tc/app/check form expected) (define (tc/app/check form expected)
(define t (tc/app/internal form expected)) (define t (tc/app/internal form expected))
(check-below t expected)) (check-below t expected))
(define (object-index os i)
(unless (number? i)
(int-err "object-index for keywords NYI"))
(list-ref os i))
;; in-indexes : Listof[Type] -> Sequence[index/c]
(define (in-indexes dom)
(in-range (length dom)))