From 6988b2e1389a6a9da70b810220043b34e12815a8 Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Wed, 29 May 2013 13:06:24 -0400 Subject: [PATCH] Fix method accessors for inherits and abstracts Closes PR 13798 --- collects/racket/private/class-internal.rkt | 9 +++------ collects/tests/racket/object.rktl | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/collects/racket/private/class-internal.rkt b/collects/racket/private/class-internal.rkt index e380d41e9e..8c095b3bf1 100644 --- a/collects/racket/private/class-internal.rkt +++ b/collects/racket/private/class-internal.rkt @@ -1302,11 +1302,8 @@ (append local-public-dynamic-names (map car all-inherits)))] [(method-accessor ...) (generate-temporaries - (map car - (append publics overrides augrides - overments augments - override-finals augment-finals - all-inherits abstracts)))] + (append local-public-dynamic-names + (map car all-inherits)))] [(inherit-field-accessor ...) (generate-temporaries (map (lambda (id) (format "get-~a" @@ -2432,7 +2429,7 @@ (append new-normal-indices replace-normal-indices refine-normal-indices replace-augonly-indices refine-augonly-indices replace-final-indices refine-final-indices - inherit-indices new-abstract-indices))]) + new-abstract-indices inherit-indices))]) ;; -- Get new methods and initializers -- (let-values ([(new-methods override-methods augride-methods init) diff --git a/collects/tests/racket/object.rktl b/collects/tests/racket/object.rktl index fc0907b4dc..4eaac35522 100644 --- a/collects/tests/racket/object.rktl +++ b/collects/tests/racket/object.rktl @@ -849,6 +849,21 @@ (define/pubment (sum) number)) exn:fail:object?) +;; example from PR 13798 +(let () + (define test% + (class object% (super-new) + (define/public (name) "test"))) + (define sub-abstract% + (class test% (super-new) (inherit name) + (abstract broken) + (define/public (full-name) (string-append (name) "subabs")))) + (define sub-concrete% + (class sub-abstract% (super-new) + (define/override (broken) "broken"))) + + (test "testsubabs" 'pr13798 (send (new sub-concrete%) full-name))) + ;; ------------------------------------------------------------ ;; Test send/apply dotted send and method-call forms: