diff --git a/pkgs/racket-test/tests/units/test-unit.rkt b/pkgs/racket-test/tests/units/test-unit.rkt index c460883198..1d13a9b1fd 100644 --- a/pkgs/racket-test/tests/units/test-unit.rkt +++ b/pkgs/racket-test/tests/units/test-unit.rkt @@ -2185,3 +2185,17 @@ (test '(0 0) (dynamic-require ''check-define-values-invoke-unit-spec 'results)) ;; ---------------------------------------- + + (let ((s 1)) + (define-signature sig (an-s (struct s (x y) #:omit-constructor))) + (test '(1 2) + (invoke-unit + (compound-unit (import) (export) + (link (((S : sig)) (unit (import) (export sig) + (define-struct s (x y)) + (define an-s (s 1 2)))) + (() (unit (import sig) (export) + (match an-s + [(s x y) (list x y)])) + S)))))) + diff --git a/racket/collects/racket/unit.rkt b/racket/collects/racket/unit.rkt index c9e609c386..a865dbbe9e 100644 --- a/racket/collects/racket/unit.rkt +++ b/racket/collects/racket/unit.rkt @@ -270,7 +270,9 @@ (cons opt-cname opt-cname))] [extra-make? #f] [else (cons def-cname #'name)])] - [(self-ctr?) (and cname (bound-identifier=? #'name (cdr cname)))]) + [(self-ctr?) (and cname + (bound-identifier=? #'name (cdr cname)) + (not no-ctr?))]) (cons #`(define-syntaxes (name) #,(let ([e (build-struct-expand-info