diff --git a/default-recommendations/require-and-provide-suggestions-test.rkt b/default-recommendations/require-and-provide-suggestions-test.rkt index 703f3ef0..ae5fdcc1 100644 --- a/default-recommendations/require-and-provide-suggestions-test.rkt +++ b/default-recommendations/require-and-provide-suggestions-test.rkt @@ -134,9 +134,17 @@ test: "require tidying of only non-phase spec forms should do nothing" ---------------------------------------- -test: "require tidying shouldn't trigger when require transformers are imported and used" +test: "require tidying shouldn't trigger when transformers are imported and used" ---------------------------------------- (require racket/require (multi-in racket (list set dict)) racket/hash) ---------------------------------------- + + +test: "require tidying shouldn't trigger when transformers are imported and used in nested specs" +---------------------------------------- +(require racket/require + (prefix-in racket: (multi-in racket (list set dict))) + racket/hash) +---------------------------------------- diff --git a/default-recommendations/require-and-provide-suggestions.rkt b/default-recommendations/require-and-provide-suggestions.rkt index 0584b7e9..796ff3ee 100644 --- a/default-recommendations/require-and-provide-suggestions.rkt +++ b/default-recommendations/require-and-provide-suggestions.rkt @@ -91,35 +91,21 @@ except-in prefix-in rename-in - combine-in - relative-in - only-meta-in - only-space-in for-syntax for-template for-label for-meta) - (pattern mod:collection-module-path #:attr parsed (parsed-simple-import 0 'plain 'collection #'mod)) - (pattern mod:file-module-path #:attr parsed (parsed-simple-import 0 'plain 'file #'mod)) - (pattern ((~or only-in - except-in - prefix-in - rename-in - combine-in - relative-in - only-meta-in - only-space-in) - subspec ...) + + (pattern :simple-module-import-spec) + + (pattern (~or (only-in _:simple-module-import-spec _ ...) + (except-in _:simple-module-import-spec _ ...) + (prefix-in _ _:simple-module-import-spec) + (rename-in _:simple-module-import-spec _ ...)) + #:cut #:attr parsed (parsed-simple-import 0 'plain 'other-known this-syntax)) + (pattern ((~and form - (~not only-in) - (~not except-in) - (~not prefix-in) - (~not rename-in) - (~not combine-in) - (~not relative-in) - (~not only-meta-in) - (~not only-space-in) (~not for-syntax) (~not for-template) (~not for-label) @@ -128,6 +114,12 @@ #:attr parsed (parsed-simple-import 0 'plain 'other-unknown this-syntax))) +(define-syntax-class simple-module-import-spec + #:attributes (parsed) + (pattern mod:collection-module-path #:attr parsed (parsed-simple-import 0 'plain 'collection #'mod)) + (pattern mod:file-module-path #:attr parsed (parsed-simple-import 0 'plain 'file #'mod))) + + (define-syntax-class collection-module-path (pattern :id))