From f5e6ce4282f2f5cf3f608a1aa07242f83711a100 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 5 Dec 2019 08:46:15 -0700 Subject: [PATCH] schemify: name raw accessor/mutators Inferred names show up as part of the compiled code, so make sure they're normalized instead of gensyms. --- racket/src/schemify/struct-convert.rkt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/racket/src/schemify/struct-convert.rkt b/racket/src/schemify/struct-convert.rkt index e9aeb7e0cc..c27c196d95 100644 --- a/racket/src/schemify/struct-convert.rkt +++ b/racket/src/schemify/struct-convert.rkt @@ -94,7 +94,9 @@ `(procedure-rename ,ctr-expr ,name-expr))] [`,_ `(procedure-rename ,ctr-expr ,name-expr)]))) - (define ,raw-s? (record-predicate ,struct:s)) + (define ,raw-s? ,(name-procedure + "" (struct-type-info-name sti) "" '|| "?" + `(record-predicate ,struct:s))) ,@(if can-impersonate? `((define ,s? ,(name-procedure "" (struct-type-info-name sti) "" '|| "?" @@ -105,7 +107,10 @@ (define raw-acc/mut (if can-impersonate? (gensym (unwrap acc/mut)) acc/mut)) (match make-acc/mut [`(make-struct-field-accessor ,(? (lambda (v) (wrap-eq? v -ref))) ,pos ',field-name) - (define raw-def `(define ,raw-acc/mut (record-accessor ,struct:s ,pos))) + (define raw-def `(define ,raw-acc/mut + ,(name-procedure + "" (struct-type-info-name sti) "-" field-name "" + `(record-accessor ,struct:s ,pos)))) (if can-impersonate? `(begin ,raw-def @@ -118,7 +123,10 @@ ',(struct-type-info-name sti) ',field-name))))))) raw-def)] [`(make-struct-field-mutator ,(? (lambda (v) (wrap-eq? v -set!))) ,pos ',field-name) - (define raw-def `(define ,raw-acc/mut (record-mutator ,struct:s ,pos))) + (define raw-def `(define ,raw-acc/mut + ,(name-procedure + "set-" (struct-type-info-name sti) "-" field-name "!" + `(record-mutator ,struct:s ,pos)))) (define abs-pos (+ pos (- (struct-type-info-field-count sti) (struct-type-info-immediate-field-count sti)))) (if can-impersonate?