diff --git a/pkgs/racket-test-core/tests/racket/struct.rktl b/pkgs/racket-test-core/tests/racket/struct.rktl index 1fa1b824a6..ff6374c7d3 100644 --- a/pkgs/racket-test-core/tests/racket/struct.rktl +++ b/pkgs/racket-test-core/tests/racket/struct.rktl @@ -499,6 +499,8 @@ (syntax-test #'(define-struct a (b c) #:property 1 10 #:prefab)) (syntax-test #'(define-struct a (b c) #:sealed #:prefab)) (syntax-test #'(define-struct a (b c) #:prefab #:sealed)) +(syntax-test #'(define-struct a (b c) #:prefab #:authentic)) +(syntax-test #'(define-struct a (b c) #:authentic #:prefab)) (define-struct base0 ()) (define-struct base1 (a)) diff --git a/racket/collects/racket/private/define-struct.rkt b/racket/collects/racket/private/define-struct.rkt index b185c9c4bb..4c6c259feb 100644 --- a/racket/collects/racket/private/define-struct.rkt +++ b/racket/collects/racket/private/define-struct.rkt @@ -350,6 +350,8 @@ (extend-config config '#:inspector #'#f) nongen?)] [(eq? '#:authentic (syntax-e (car p))) + (when nongen? + (bad "cannot use" (car p) " for prefab structure type")) (when (lookup config '#:authentic) (bad "multiple" "#:authentic" "s" (car p))) (loop (cdr p) @@ -403,6 +405,8 @@ (bad "cannot use" (car p) " for a sealed structure type")) (when (lookup config '#:guard) (bad "cannot use" (car p) " for a structure type with a guard")) + (when (lookup config '#:authentic) + (bad "cannot use" (car p) " for an authentic structure type")) (loop (cdr p) (extend-config config '#:inspector #''prefab) #t)]