diff --git a/collects/tests/typed-racket/succeed/for.rkt b/collects/tests/typed-racket/succeed/for.rkt index 8dfd6c08..86bce860 100644 --- a/collects/tests/typed-racket/succeed/for.rkt +++ b/collects/tests/typed-racket/succeed/for.rkt @@ -160,3 +160,26 @@ ([i : Integer (in-range 1 10)]) i) 362880) + + +;; Integers as sequences. +(check = + (for/sum: : Integer + ([i : Byte 4]) + i) + 6) +(check = + (for/sum: : Integer + ([i : Index (ann 4 Index)]) + i) + 6) +(check = + (for/sum: : Integer + ([i : Nonnegative-Fixnum (ann 4 Fixnum)]) + i) + 6) +(check = + (for/sum: : Integer + ([i : Natural (ann 4 Integer)]) + i) + 6) diff --git a/collects/typed-racket/base-env/base-special-env.rkt b/collects/typed-racket/base-env/base-special-env.rkt index 9b3e034f..050c79f4 100644 --- a/collects/typed-racket/base-env/base-special-env.rkt +++ b/collects/typed-racket/base-env/base-special-env.rkt @@ -64,6 +64,11 @@ (Un (->* a Univ) (-val #f)) (Un (->* (cons Univ a) Univ) (-val #f)))))]) (cl->* + (-> Univ -Byte (seq-vals (list -Byte))) + (-> Univ -Index (seq-vals (list -Index))) + ;; Generous. Negative numbers aren't allowed. + (-> Univ -Fixnum (seq-vals (list -NonNegFixnum))) + (-> Univ -Int (seq-vals (list -Nat))) (-> Univ (-seq a) (seq-vals (list a))) (-> Univ (-seq a b) (seq-vals (list a b))))))] ;; in-range