Opaque class/c should treat field opaquely too.

This commit is contained in:
Asumu Takikawa 2012-01-12 17:49:04 -05:00
parent 3eb963f62d
commit f1557bc4be

View File

@ -2638,6 +2638,10 @@
(for ([f (class/c-absent-fields ctc)]) (for ([f (class/c-absent-fields ctc)])
(when (hash-ref field-ht f #f) (when (hash-ref field-ht f #f)
(fail "class already contains public field ~a" 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)]) (for ([f (class/c-inherit-fields ctc)])
(unless (hash-ref field-ht f #f) (unless (hash-ref field-ht f #f)
(fail "no public field ~a" f))))) (fail "no public field ~a" f)))))