From 0f77fce5ce63a2031e0ebc9f2327bfd320c7ba9a Mon Sep 17 00:00:00 2001 From: Jack Firth Date: Sat, 14 Sep 2024 00:50:46 -0700 Subject: [PATCH] Don't refactor `let` at module level --- .../let-binding-suggestions-test.rkt | 15 +++++++++++++++ .../private/definition-context.rkt | 18 ++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/default-recommendations/let-binding-suggestions-test.rkt b/default-recommendations/let-binding-suggestions-test.rkt index 254041b..9aff5e0 100644 --- a/default-recommendations/let-binding-suggestions-test.rkt +++ b/default-recommendations/let-binding-suggestions-test.rkt @@ -430,6 +430,21 @@ test: "let forms inside for loop bodies" ------------------------------ +test: "let forms at module level not refactorable to define" +------------------------------ +(let ([x 1]) + (* x 2)) +------------------------------ + + +test: "let forms at submodule level not refactorable to define" +------------------------------ +(module+ test + (let ([x 1]) + (* x 2))) +------------------------------ + + test: "named lets which don't refer to the name are refactorable to unnamed lets" ------------------------------ (let loop ([x 1]) x) diff --git a/default-recommendations/private/definition-context.rkt b/default-recommendations/private/definition-context.rkt index 899816f..cab10d2 100644 --- a/default-recommendations/private/definition-context.rkt +++ b/default-recommendations/private/definition-context.rkt @@ -32,10 +32,6 @@ (define-splicing-syntax-class header-form-allowing-internal-definitions #:attributes ([original 1]) #:literals (block - #%module-begin - module - module* - module+ let let* let-values @@ -100,14 +96,13 @@ (define-syntax-class header-id-with-no-header-forms - #:literals (block #%module-begin) - (pattern (~or block #%module-begin))) + #:literals (block) + (pattern block)) (define-syntax-class header-id-with-one-header-form - #:literals (module+ - let* - let-values + #:literals (let* + let-values let*-values when unless @@ -138,7 +133,6 @@ for*/first for*/last) (pattern (~or :lambda-by-any-name - module+ let* let-values let*-values @@ -173,8 +167,8 @@ (define-syntax-class header-id-with-two-header-forms - #:literals (module module* for/fold for*/fold) - (pattern (~or module module* for/fold for*/fold))) + #:literals (for/fold for*/fold) + (pattern (~or for/fold for*/fold))) (define-splicing-syntax-class branching-form-allowing-internal-definitions-within-clauses