diff --git a/typed-racket-lib/typed-racket/base-env/base-env.rkt b/typed-racket-lib/typed-racket/base-env/base-env.rkt index 148209c9..c83d7a7d 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env.rkt @@ -703,8 +703,9 @@ . ->... . -Index))] [partition - (-poly (a b) (cl->* (-> (-> a Univ) (-lst a) (-values (list (-lst a) (-lst a)))) - (-> (make-pred-ty a) (-lst b) (-values (list (-lst a) (-lst b))))))] + (-poly (a b) (cl->* + (-> (asym-pred b Univ (-FS (-filter a 0) -top)) (-lst b) (-values (list (-lst a) (-lst b)))) + (-> (-> a Univ) (-lst a) (-values (list (-lst a) (-lst a))))))] [last (-poly (a) ((-lst a) . -> . a))] [add-between (-poly (a b) ((-lst a) b diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 7e8d3a25..75e86dd1 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -1187,6 +1187,11 @@ [tc-e (sequence-filter module-path? (ann (vector "a" 4 5 "b") (Vectorof Any))) (-seq (t:Un -Module-Path))] + [tc-e (let ([pos-not-5? : [-> Real (U Positive-Real #f) : #:+ Positive-Real] + (λ (x) (and (positive? x) (not (= x 5)) x))]) + (partition pos-not-5? (ann '(1 2 -3 4.2 5 -6) (Listof Real)))) + (list (-lst -PosReal) (-lst -Real))] ; multiple values + #| [tc-err (plambda: (a ...) [as : a ... a]