From f1557bc4be40230f42202b4b0ec0c77501d628ca Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Thu, 12 Jan 2012 17:49:04 -0500 Subject: [PATCH] Opaque class/c should treat field opaquely too. --- collects/racket/private/class-internal.rkt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/collects/racket/private/class-internal.rkt b/collects/racket/private/class-internal.rkt index 9ec8d3b0c7..6c4b81c4fc 100644 --- a/collects/racket/private/class-internal.rkt +++ b/collects/racket/private/class-internal.rkt @@ -2638,6 +2638,10 @@ (for ([f (class/c-absent-fields ctc)]) (when (hash-ref field-ht f #f) (fail "class already contains public field ~a" f))) + (when (class/c-opaque? ctc) + (for ([f (in-hash-keys field-ht)]) + (unless (memq f (class/c-fields ctc)) + (fail "field ~a not specified in contract" f)))) (for ([f (class/c-inherit-fields ctc)]) (unless (hash-ref field-ht f #f) (fail "no public field ~a" f)))))