From d5162c6e10f1a0274a013be794aac615b21f97ea Mon Sep 17 00:00:00 2001 From: Pavel Panchekha Date: Mon, 24 Feb 2025 23:21:31 -0700 Subject: [PATCH] Remove the apply-append-for-loop-to-for-loop lint (#441) See jackfirst/resyntax#435; this lint tends to produce worse output than the input it started with. --- .../for-loop-shortcuts-test.rkt | 59 ------------------- .../for-loop-shortcuts.rkt | 25 -------- 2 files changed, 84 deletions(-) diff --git a/default-recommendations/for-loop-shortcuts-test.rkt b/default-recommendations/for-loop-shortcuts-test.rkt index ec70a73..24c5b34 100644 --- a/default-recommendations/for-loop-shortcuts-test.rkt +++ b/default-recommendations/for-loop-shortcuts-test.rkt @@ -643,25 +643,6 @@ test: "for-each and append-map can be replaced by for* with #:when" ------------------------------------------------------------ -test: "(apply append ...) with a for loop can be removed" ------------------------------------------------------------- -(define formulas - (hash 'water (list 'hydrogen 'oxygen) - 'benzene (list 'hydrogen 'carbon))) -(apply append - (for/list ([k (in-hash-keys formulas)]) - (hash-ref formulas k))) ------------------------------------------------------------- ------------------------------------------------------------- -(define formulas - (hash 'water (list 'hydrogen 'oxygen) - 'benzene (list 'hydrogen 'carbon))) -(for*/list ([k (in-hash-keys formulas)] - [v (in-list (hash-ref formulas k))]) - v) ------------------------------------------------------------- - - test: "(apply append ...) with a multi-clause for loop can't be removed" ------------------------------------------------------------ (define formulas @@ -686,46 +667,6 @@ test: "(apply append ...) with a multi-body for loop can't be removed" ------------------------------------------------------------ -test: "(apply append ...) with a for* loop can be removed" ------------------------------------------------------------- -(define formulas - (hash 'water (list 'hydrogen 'oxygen) - 'benzene (list 'hydrogen 'carbon))) -(apply append - (for*/list ([k (in-hash-keys formulas)]) - (hash-ref formulas k))) ------------------------------------------------------------- ------------------------------------------------------------- -(define formulas - (hash 'water (list 'hydrogen 'oxygen) - 'benzene (list 'hydrogen 'carbon))) -(for*/list ([k (in-hash-keys formulas)] - [v (in-list (hash-ref formulas k))]) - v) ------------------------------------------------------------- - - -test: "(apply append ...) with a multi-clause for* loop can be removed" ------------------------------------------------------------- -(define formulas - (hash 'water (list 'hydrogen 'oxygen) - 'benzene (list 'hydrogen 'carbon))) -(apply append - (for*/list ([k (in-hash-keys formulas)] - [i (in-range 0 5)]) - (hash-ref formulas k))) ------------------------------------------------------------- ------------------------------------------------------------- -(define formulas - (hash 'water (list 'hydrogen 'oxygen) - 'benzene (list 'hydrogen 'carbon))) -(for*/list ([k (in-hash-keys formulas)] - [i (in-range 0 5)] - [v (in-list (hash-ref formulas k))]) - v) ------------------------------------------------------------- - - test: "(apply append ...) with a multi-body for* loop can't be removed" ------------------------------------------------------------ (define formulas diff --git a/default-recommendations/for-loop-shortcuts.rkt b/default-recommendations/for-loop-shortcuts.rkt index 5154a89..8567a51 100644 --- a/default-recommendations/for-loop-shortcuts.rkt +++ b/default-recommendations/for-loop-shortcuts.rkt @@ -424,30 +424,6 @@ return just that result." (~@ . (~splicing-replacement (last-condition.refactored ...) #:original original-body)))) -(define-syntax-class apply-append-refactorable-for-loop - #:attributes (refactored-loop) - #:literals (for/list for*/list) - - (pattern (for/list (only-clause) only-body:expr) - #:when (oneline-syntax? #'only-body) - #:with refactored-loop - #'(for*/list (only-clause [v (in-list only-body)]) - v)) - - (pattern ((~and loop-id for*/list) (clause ...) only-body:expr) - #:when (oneline-syntax? #'only-body) - #:with refactored-loop - #'(loop-id (clause ... [v (in-list only-body)]) v))) - - -(define-refactoring-rule apply-append-for-loop-to-for-loop - #:description "Instead of using `(apply append ...)` to flatten a list of lists, consider using\ - `for*/list` to flatten the list." - #:literals (apply append) - (apply append loop:apply-append-refactorable-for-loop) - loop.refactored-loop) - - (define-refactoring-rule when-expression-in-for-loop-to-when-keyword #:description "Use the `#:when` keyword instead of `when` to reduce loop body indentation." #:literals (when for for*) @@ -465,7 +441,6 @@ return just that result." (define-refactoring-suite for-loop-shortcuts #:rules (andmap-to-for/and append-map-for/list-to-for*/list - apply-append-for-loop-to-for-loop apply-plus-to-for/sum for/fold-building-hash-to-for/hash for/fold-result-keyword