Remove extraneous uses of expected in tc-app-hetero.
This commit is contained in:
parent
aa6a04fd46
commit
c7ef6fc6dd
|
@ -34,8 +34,8 @@
|
||||||
(check-below tc-results (ret -Integer))
|
(check-below tc-results (ret -Integer))
|
||||||
#f])]))
|
#f])]))
|
||||||
|
|
||||||
(define (index-error i-val i-bound expr type expected name)
|
(define (index-error i-val i-bound expr type name)
|
||||||
(define return (or expected (ret (Un))))
|
(define return (ret -Bottom))
|
||||||
(cond
|
(cond
|
||||||
[(not (and (integer? i-val) (exact? i-val)))
|
[(not (and (integer? i-val) (exact? i-val)))
|
||||||
(tc-error/expr #:stx expr #:return return "expected exact integer for ~a index, but got ~a" name i-val)]
|
(tc-error/expr #:stx expr #:return return "expected exact integer for ~a index, but got ~a" name i-val)]
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
|
|
||||||
;; FIXME - Do something with paths in the case that a structure/vector is not mutable
|
;; FIXME - Do something with paths in the case that a structure/vector is not mutable
|
||||||
(define (tc/hetero-ref i-e es-t vec-t expected name)
|
(define (tc/hetero-ref i-e es-t vec-t name)
|
||||||
(define i-val (tc/index i-e))
|
(define i-val (tc/index i-e))
|
||||||
(define i-bound (length es-t))
|
(define i-bound (length es-t))
|
||||||
(cond
|
(cond
|
||||||
|
@ -58,9 +58,9 @@
|
||||||
[(not i-val)
|
[(not i-val)
|
||||||
(ret (apply Un es-t))]
|
(ret (apply Un es-t))]
|
||||||
[else
|
[else
|
||||||
(index-error i-val i-bound i-e vec-t expected name)]))
|
(index-error i-val i-bound i-e vec-t name)]))
|
||||||
|
|
||||||
(define (tc/hetero-set! i-e es-t val-e vec-t expected name)
|
(define (tc/hetero-set! i-e es-t val-e vec-t name)
|
||||||
(define i-val (tc/index i-e))
|
(define i-val (tc/index i-e))
|
||||||
(define i-bound (length es-t))
|
(define i-bound (length es-t))
|
||||||
(cond
|
(cond
|
||||||
|
@ -71,35 +71,35 @@
|
||||||
(define val-t (single-value val-e))
|
(define val-t (single-value val-e))
|
||||||
(for ((es-type (in-list es-t)))
|
(for ((es-type (in-list es-t)))
|
||||||
(check-below val-t (ret es-type)))
|
(check-below val-t (ret es-type)))
|
||||||
(cond-check-below (ret -Void) expected)]
|
(ret -Void)]
|
||||||
[else
|
[else
|
||||||
(single-value val-e)
|
(single-value val-e)
|
||||||
(index-error i-val i-bound i-e vec-t expected name)]))
|
(index-error i-val i-bound i-e vec-t name)]))
|
||||||
|
|
||||||
(define-tc/app-syntax-class (tc/app-hetero expected)
|
(define-tc/app-syntax-class (tc/app-hetero expected)
|
||||||
#:literal-sets (hetero-literals)
|
#:literal-sets (hetero-literals)
|
||||||
(pattern (~and form ((~or unsafe-struct-ref unsafe-struct*-ref) struct:expr index:expr))
|
(pattern (~and form ((~or unsafe-struct-ref unsafe-struct*-ref) struct:expr index:expr))
|
||||||
(match (single-value #'struct)
|
(match (single-value #'struct)
|
||||||
[(tc-result1: (and struct-t (app resolve (Struct: _ _ (list (fld: flds _ _) ...) _ _ _))))
|
[(tc-result1: (and struct-t (app resolve (Struct: _ _ (list (fld: flds _ _) ...) _ _ _))))
|
||||||
(tc/hetero-ref #'index flds struct-t expected "struct")]
|
(tc/hetero-ref #'index flds struct-t "struct")]
|
||||||
[s-ty (tc/app-regular #'form expected)]))
|
[s-ty (tc/app-regular #'form expected)]))
|
||||||
;; vector-ref on het vectors
|
;; vector-ref on het vectors
|
||||||
(pattern (~and form ((~or vector-ref unsafe-vector-ref unsafe-vector*-ref) vec:expr index:expr))
|
(pattern (~and form ((~or vector-ref unsafe-vector-ref unsafe-vector*-ref) vec:expr index:expr))
|
||||||
(match (single-value #'vec)
|
(match (single-value #'vec)
|
||||||
[(tc-result1: (and vec-t (app resolve (HeterogeneousVector: es))))
|
[(tc-result1: (and vec-t (app resolve (HeterogeneousVector: es))))
|
||||||
(tc/hetero-ref #'index es vec-t expected "vector")]
|
(tc/hetero-ref #'index es vec-t "vector")]
|
||||||
[v-ty (tc/app-regular #'form expected)]))
|
[v-ty (tc/app-regular #'form expected)]))
|
||||||
;; unsafe struct-set!
|
;; unsafe struct-set!
|
||||||
(pattern (~and form ((~or unsafe-struct-set! unsafe-struct*-set!) s:expr index:expr val:expr))
|
(pattern (~and form ((~or unsafe-struct-set! unsafe-struct*-set!) s:expr index:expr val:expr))
|
||||||
(match (single-value #'s)
|
(match (single-value #'s)
|
||||||
[(tc-result1: (and struct-t (app resolve (Struct: _ _ (list (fld: flds _ _) ...) _ _ _))))
|
[(tc-result1: (and struct-t (app resolve (Struct: _ _ (list (fld: flds _ _) ...) _ _ _))))
|
||||||
(tc/hetero-set! #'index flds #'val struct-t expected "struct")]
|
(tc/hetero-set! #'index flds #'val struct-t "struct")]
|
||||||
[s-ty (tc/app-regular #'form expected)]))
|
[s-ty (tc/app-regular #'form expected)]))
|
||||||
;; vector-set! on het vectors
|
;; vector-set! on het vectors
|
||||||
(pattern (~and form ((~or vector-set! unsafe-vector-set! unsafe-vector*-set!) v:expr index:expr val:expr))
|
(pattern (~and form ((~or vector-set! unsafe-vector-set! unsafe-vector*-set!) v:expr index:expr val:expr))
|
||||||
(match (single-value #'v)
|
(match (single-value #'v)
|
||||||
[(tc-result1: (and vec-t (app resolve (HeterogeneousVector: es))))
|
[(tc-result1: (and vec-t (app resolve (HeterogeneousVector: es))))
|
||||||
(tc/hetero-set! #'index es #'val vec-t expected "vector")]
|
(tc/hetero-set! #'index es #'val vec-t "vector")]
|
||||||
[v-ty (tc/app-regular #'form expected)]))
|
[v-ty (tc/app-regular #'form expected)]))
|
||||||
(pattern (~and form ((~or vector-immutable vector) args:expr ...))
|
(pattern (~and form ((~or vector-immutable vector) args:expr ...))
|
||||||
(match expected
|
(match expected
|
||||||
|
|
Loading…
Reference in New Issue
Block a user