fix name of struct constructor built by struct-out

closes PR 14073
This commit is contained in:
Robby Findler 2013-10-06 08:20:24 -05:00
parent 007d563a41
commit a13aed7420
2 changed files with 22 additions and 5 deletions

View File

@ -914,6 +914,20 @@
(eval 'provide/contract46-x))
123)
(test/spec-passed/result
'provide/contract47
'(begin
(eval '(module provide/contract47-m1 racket
(struct the-name-of-my-struct ())
(provide (contract-out (struct the-name-of-my-struct ())))))
(eval '(module provide/contract47-m2 racket
(require 'provide/contract47-m1)
(define provide/contract47-x (object-name the-name-of-my-struct))
(provide provide/contract47-x)))
(eval '(require 'provide/contract47-m2))
(eval 'provide/contract47-x))
'the-name-of-my-struct)
(contract-error-test
'contract-error-test8
#'(begin

View File

@ -606,11 +606,14 @@
selector-codes ...
mutator-codes ...
predicate-code
(define (#,chaperone-constructor-id constructor-args ...)
(chaperone-struct (#,constructor-id constructor-args ...)
struct-info
(λ (struct-type skipped?)
(values -struct:struct-name skipped?))))
(define #,chaperone-constructor-id
(let ([struct-name
(λ (constructor-args ...)
(chaperone-struct (#,constructor-id constructor-args ...)
struct-info
(λ (struct-type skipped?)
(values -struct:struct-name skipped?))))])
struct-name))
constructor-code
;; expanding out the body of the `make-pc-struct-type' function