Conversion of object/c and object-contract to use impersonators.

original commit: 2bd7760412ec9c8e4af8936193cb3a6cb95518b0
This commit is contained in:
Stevie Strickland 2010-11-15 16:06:43 -05:00
parent 866da10d6e
commit d0a35ce51a

View File

@ -281,6 +281,7 @@
... ...
[field-ctc-var (coerce-contract 'object-contract field-ctc-stx)] [field-ctc-var (coerce-contract 'object-contract field-ctc-stx)]
...) ...)
(define ctc
(make-contract (make-contract
#:name #:name
`(object-contract `(object-contract
@ -289,12 +290,13 @@
#:projection #:projection
(lambda (blame) (lambda (blame)
(lambda (val) (lambda (val)
(make-wrapper-object val blame (make-wrapper-object ctc val blame
(list 'method-name ...) (list method-ctc-var ...) (list 'method-name ...) (list method-ctc-var ...)
(list 'field-name ...) (list field-ctc-var ...)))) (list 'field-name ...) (list field-ctc-var ...))))
#:first-order #:first-order
(lambda (val) (lambda (val)
(check-object-contract val #f (list 'method-name ...) (list 'field-name ...))))))))])))) (check-object-contract val #f (list 'method-name ...) (list 'field-name ...))))
ctc)))))]))))
(define (check-object val blame) (define (check-object val blame)