From 38522f0dca181253f99d3629da1854a04132c7a8 Mon Sep 17 00:00:00 2001 From: Stevie Strickland Date: Thu, 18 Feb 2010 23:22:51 +0000 Subject: [PATCH] A tricky case, this. svn: r18170 --- collects/tests/mzscheme/contract-test.ss | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/collects/tests/mzscheme/contract-test.ss b/collects/tests/mzscheme/contract-test.ss index 9c9f636a58..0d5c4da6b2 100644 --- a/collects/tests/mzscheme/contract-test.ss +++ b/collects/tests/mzscheme/contract-test.ss @@ -4313,6 +4313,21 @@ 'neg)]) (send (new c%) m 3))) + ;; Test that public method contracts are not checked for implication. + ;; Public method contracts do not check behavioral subtyping. + ;; Once interfaces have contracts, those will. + (test/spec-passed + 'class/c-higher-order-method-3 + '(let* ([c% (contract (class/c [m (-> any/c number? number?)]) + (class object% (super-new) (define/public (m x) (zero? x))) + 'pos + 'neg)] + [d% (contract (class/c [m (-> any/c boolean?)]) + (class c% (super-new) (define/override (m) (super m 5))) + 'pos + 'neg)]) + (send (new d%) m))) + ; ; ; ;; ;; ; ;;