diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/filter-ops.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/filter-ops.rkt index 27aa10f8..f21204c0 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/filter-ops.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/filter-ops.rkt @@ -23,6 +23,8 @@ (and (name-ref=? i1 i2) (subtype t1 t2))] [((NotTypeFilter: t2 p1 i2) (TypeFilter: t1 p1 i1)) (and (name-ref=? i1 i2) (subtype t1 t2))] + [((Bot:) _) #t] + [(_ (Bot:)) #t] [(_ _) #f])) ;; complementary: Filter/c Filter/c -> boolean? @@ -33,6 +35,7 @@ (and (name-ref=? i1 i2) (subtype t2 t1))] [((NotTypeFilter: t2 p1 i2) (TypeFilter: t1 p1 i1)) (and (name-ref=? i1 i2) (subtype t2 t1))] + [((Top:) (Top:)) #t] [(_ _) #f])) (define (name-ref=? a b) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/filter-tests.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/filter-tests.rkt index f9143e0a..533eaabe 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/filter-tests.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/filter-tests.rkt @@ -53,6 +53,19 @@ (test-opposite #:not-complementary #:not-contradictory (-not-filter -Symbol 0) (-filter -String 0)) + + (test-opposite #:not-complementary #:contradictory + -bot + -bot) + + (test-opposite #:not-complementary #:contradictory + -bot + -top) + + (test-opposite #:complementary #:not-contradictory + -top + -top) + ) (test-suite "Implied Atomic"