diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl index 9252a64fa2..80df4dcc9a 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/chaperone.rktl @@ -1510,7 +1510,12 @@ (let () (struct s ([a #:mutable])) - (err/rt-test (impersonate-struct 5 set-s-a! (lambda (a b) b)))) + (err/rt-test (impersonate-struct 5 set-s-a! (lambda (a b) b))) + (err/rt-test (impersonate-struct (s 1) #f (λ (a b) v)) + (λ (x) + (and (exn:application:type? x) + (regexp-match #rx"struct-type-property-accessor-procedure[?]" + (exn-message x)))))) ;; ---------------------------------------- diff --git a/racket/src/racket/src/struct.c b/racket/src/racket/src/struct.c index 01f6b61328..6ad1c72a9e 100644 --- a/racket/src/racket/src/struct.c +++ b/racket/src/racket/src/struct.c @@ -5473,10 +5473,10 @@ static Scheme_Object *do_chaperone_struct(const char *name, int is_impersonator, offset = -2; } else { scheme_wrong_contract(name, - (is_impersonator - ? "(or/c struct-accessor-procedure? struct-mutator-procedure?)" - : ("(or/c struct-accessor-procedure? struct-mutator-procedure?" - " struct-type-property-accessor-procedure? (one-of/c struct-info))")), + "(or/c struct-accessor-procedure?\n" + " struct-mutator-procedure?\n" + " struct-type-property-accessor-procedure?\n" + " (one-of/c struct-info))", i, argc, argv); return NULL; }