diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/contract/class.rkt b/pkgs/racket-pkgs/racket-test/tests/racket/contract/class.rkt index 63fff45263..d2605e5c4e 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/contract/class.rkt +++ b/pkgs/racket-pkgs/racket-test/tests/racket/contract/class.rkt @@ -2295,6 +2295,23 @@ (with-method ([m (o m)]) (m #f)))) + (test/spec-passed + 'mixin1 + '((mixin () () (super-new)) + (contract (class/c m) + (class object% (define/public (m x) x) (super-new)) + 'pos + 'neg))) + + (test/spec-passed + 'mixin2 + '(send (new ((mixin () () (super-new)) + (contract (class/c [m (->m integer? integer?)]) + (class object% (define/public (m x) x) (super-new)) + 'pos + 'neg))) + m 1)) + (let ([expected-given? (λ (exn) (and (regexp-match? #rx"callback: contract violation" (exn-message exn)) (regexp-match? #rx"expected: boolean[?]" (exn-message exn)) diff --git a/racket/collects/racket/private/class-internal.rkt b/racket/collects/racket/private/class-internal.rkt index f3cee449b6..83a84f4422 100644 --- a/racket/collects/racket/private/class-internal.rkt +++ b/racket/collects/racket/private/class-internal.rkt @@ -4340,7 +4340,7 @@ An example (define (check-mixin-super mixin-name super% from-ids) (let ([mixin-name (or mixin-name 'mixin)]) - (unless (class? super%) + (unless (-class? super%) (obj-error mixin-name "argument is not a class" "argument" super%))