From 6e2fb2ac5e32d42a0b4b5e66b0af9089c430f159 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 29 Jul 2012 09:11:43 -0500 Subject: [PATCH] make the code that does the mixin checks work with define-local-member-name closes PR 11279 closes PR 12397 --- collects/racket/private/class-internal.rkt | 10 ++++++---- collects/tests/racket/object.rktl | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/collects/racket/private/class-internal.rkt b/collects/racket/private/class-internal.rkt index f9f635d3a1..ee79e98430 100644 --- a/collects/racket/private/class-internal.rkt +++ b/collects/racket/private/class-internal.rkt @@ -5014,9 +5014,11 @@ An example [(_ (from ...) (to ...) clauses ...) (let ([extract-renamed-names (λ (x) - (map (λ (x) (syntax-case x () - [(internal-name external-name) (syntax external-name)] - [else x])) + (map (λ (x) + (localize + (syntax-case x () + [(internal-name external-name) (syntax external-name)] + [else x]))) (syntax->list x)))]) (define (get-super-names stx) (syntax-case stx (inherit rename @@ -5077,7 +5079,7 @@ An example (let ([to-ids to] ...) (check-mixin-from-interfaces (list from-ids ...)) (check-mixin-to-interfaces (list to-ids ...)) - (check-interface-includes (list (quote super-vars) ...) + (check-interface-includes (list (quasiquote super-vars) ...) (list from-ids ...)) mixin-expr)))))))])) diff --git a/collects/tests/racket/object.rktl b/collects/tests/racket/object.rktl index 679367409d..41020d28ed 100644 --- a/collects/tests/racket/object.rktl +++ b/collects/tests/racket/object.rktl @@ -1675,4 +1675,25 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ---------------------------------------- +;; Mixins + +(let () + (define-local-member-name m) + (define i<%> (interface () m n)) + (define mix + (mixin (i<%>) () + (inherit m n) + (super-new) + (define/public (x) (+ (m) (n))))) + (define c% + (class* object% (i<%>) + (define/public (m) 1) + (define/public (n) 2) + (super-new))) + (test 3 'mixin-with-local-member-names (send (new (mix c%)) x))) + + + (report-errs) +