From c2cae5b7e3670bd023bcd245609fe2ee381cacb7 Mon Sep 17 00:00:00 2001 From: Fred Fu Date: Mon, 8 Jun 2020 17:03:17 -0400 Subject: [PATCH] [CS] struct-type-make-predicate creates a value that passes struct-predicate-procedure? Fixes #3239 --- pkgs/racket-test-core/tests/racket/struct.rktl | 7 ++++++- racket/src/cs/rumble/struct.ss | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/struct.rktl b/pkgs/racket-test-core/tests/racket/struct.rktl index dd46464b10..db634624f1 100644 --- a/pkgs/racket-test-core/tests/racket/struct.rktl +++ b/pkgs/racket-test-core/tests/racket/struct.rktl @@ -70,7 +70,12 @@ (test #f struct-accessor-procedure? set1) (err/rt-test (make-struct-field-accessor sel 3) exn:application:mismatch?) (test 'make-a object-name (struct-type-make-constructor type)) - (test 'some-other-name object-name (struct-type-make-constructor type 'some-other-name)) + (let ([new-ctor (struct-type-make-constructor type 'some-other-name)]) + (test 'some-other-name object-name new-ctor) + (test #t struct-constructor-procedure? new-ctor)) + (let ([new-pred (struct-type-make-predicate type)]) + (test #t struct-predicate-procedure? new-pred) + (test #f struct-constructor-procedure? new-pred)) (let ([an-a (make 'one 'two)] [an-ax (makex)]) (test #f procedure-struct-type? type) diff --git a/racket/src/cs/rumble/struct.ss b/racket/src/cs/rumble/struct.ss index f7bacc0072..e6c304678a 100644 --- a/racket/src/cs/rumble/struct.ss +++ b/racket/src/cs/rumble/struct.ss @@ -945,7 +945,7 @@ (or (record? v rtd*) (and (impersonator? v) (record? (impersonator-val v) rtd*)))))]) - (register-struct-constructor! pred) + (register-struct-predicate! pred) pred))) ;; ----------------------------------------