diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/contract/name.rkt b/pkgs/racket-pkgs/racket-test/tests/racket/contract/name.rkt index 5bc805493a..ec7a532f11 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/contract/name.rkt +++ b/pkgs/racket-pkgs/racket-test/tests/racket/contract/name.rkt @@ -352,6 +352,7 @@ (override [o (->m (<=/c 2) integer?)]) (augment [p (->m (<=/c 3) integer?)]) (augride [q (->m (<=/c 4) integer?)]))) + (test-name '(class/c (field n)) (class/c (field n))) (test-name '(struct/dc s [a integer?] diff --git a/racket/collects/racket/private/class-c-new.rkt b/racket/collects/racket/private/class-c-new.rkt index 3a0020eba6..4835068886 100644 --- a/racket/collects/racket/private/class-c-new.rkt +++ b/racket/collects/racket/private/class-c-new.rkt @@ -448,7 +448,9 @@ [else (define field-names (for/list ([(fld ctc) (in-hash (ext-class/c-contract-table-of-flds-to-ctcs c))]) - `(,fld ,(contract-name ctc)))) + (if (just-check-existence? ctc) + fld + `(,fld ,(contract-name ctc))))) (define init-fields '()) (define init-names (filter @@ -468,7 +470,8 @@ (set! init-fields (cons clause init-fields)) #f] [else clause])])))) - (set! field-names (filter (λ (x) (not (member (car x) (map car init-fields)))) + (set! field-names (filter (λ (x) (or (not (pair? x)) + (not (member (car x) (map car init-fields))))) field-names)) (define meth-names