class/c: fix interaction w/ absent and #:opaque

This commit is contained in:
Asumu Takikawa 2012-04-26 14:22:54 -04:00
parent 841b190ef7
commit 0ea558a463

View File

@ -2574,9 +2574,10 @@
(for ([m (class/c-methods ctc)])
(unless (hash-ref method-ht m #f)
(fail "no public method ~a" m)))
(for ([m (class/c-absents ctc)])
(when (hash-ref method-ht m #f)
(fail "class already contains public method ~a" m)))
(unless (class/c-opaque? ctc)
(for ([m (class/c-absents ctc)])
(when (hash-ref method-ht m #f)
(fail "class already contains public method ~a" m))))
(when (class/c-opaque? ctc)
(for ([m (in-hash-keys method-ht)])
(unless (memq m (class/c-methods ctc))
@ -2637,9 +2638,10 @@
(for ([f (class/c-fields ctc)])
(unless (hash-ref field-ht f #f)
(fail "no public field ~a" f)))
(for ([f (class/c-absent-fields ctc)])
(when (hash-ref field-ht f #f)
(fail "class already contains public field ~a" f)))
(unless (class/c-opaque? ctc)
(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))