Clean up of tc-app.rkt.
This commit is contained in:
parent
779291c795
commit
dd078dcb95
|
@ -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)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user