From dbe36162acd7512258ae19fd6e74bc5497573b0b Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 30 Dec 2020 04:54:06 -0700 Subject: [PATCH] cs: fix some predefined struct-operation procedure names Closes #3592 --- pkgs/racket-test-core/tests/racket/name.rktl | 7 +++++++ racket/src/cs/rumble/struct.ss | 18 +++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/name.rktl b/pkgs/racket-test-core/tests/racket/name.rktl index 5646d93afb..f97f417b55 100644 --- a/pkgs/racket-test-core/tests/racket/name.rktl +++ b/pkgs/racket-test-core/tests/racket/name.rktl @@ -207,4 +207,11 @@ (test 'bytes-set! object-name bytes-set!) (test 'bytes-length object-name bytes-length) +;; Check some primitive structure functions +(test 'date object-name date) +(test 'date* object-name date*) +(test 'date? object-name date?) +(test 'date*? object-name date*?) +(test 'date-second object-name date-second) + (report-errs) diff --git a/racket/src/cs/rumble/struct.ss b/racket/src/cs/rumble/struct.ss index 1068d5dcf2..dc8f9f6a60 100644 --- a/racket/src/cs/rumble/struct.ss +++ b/racket/src/cs/rumble/struct.ss @@ -1282,16 +1282,20 @@ (define name ctr-expr) (define authentic-name? (record-predicate struct:name)) (define name? (|#%struct-predicate| - (lambda (v) (or (authentic-name? v) - (and (impersonator? v) - (authentic-name? (impersonator-val v))))))) + (|#%name| + name? + (lambda (v) (or (authentic-name? v) + (and (impersonator? v) + (authentic-name? (impersonator-val v)))))))) (define name-field (let ([name-field (record-accessor struct:name field-index)]) (|#%struct-field-accessor| - (lambda (v) - (if (authentic-name? v) - (name-field v) - (pariah (impersonate-ref name-field struct:name field-index v 'name 'field)))) + (|#%name| + name-field + (lambda (v) + (if (authentic-name? v) + (name-field v) + (pariah (impersonate-ref name-field struct:name field-index v 'name 'field))))) struct:name field-index))) ...