From f09c78b5f4134ab738a272ac4b67be1ee3671eb1 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 31 Aug 2015 16:20:52 -0600 Subject: [PATCH] racket/unit: fix `#:omit-constructor` Closes #1006, with a test case based on that report. --- pkgs/racket-test/tests/units/test-unit.rkt | 14 ++++++++++++++ racket/collects/racket/unit.rkt | 4 +++- 2 files changed, 17 insertions(+), 1 deletion(-) 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