diff --git a/crates/ruff_linter/resources/test/fixtures/refurb/FURB129.py b/crates/ruff_linter/resources/test/fixtures/refurb/FURB129.py index 05a04f3d65..52b4591a4e 100644 --- a/crates/ruff_linter/resources/test/fixtures/refurb/FURB129.py +++ b/crates/ruff_linter/resources/test/fixtures/refurb/FURB129.py @@ -102,8 +102,6 @@ with open("furb129.py") as f: pass for line in(f).readlines(): pass - # Test case for issue #17683 - missing space before keyword + + # Test case for issue #17683 (missing space before keyword) print([line for line in f.readlines()if True]) - print([line for line in f.readlines()and True]) - print([line for line in f.readlines()or True]) - print([line for line in f.readlines()in ["test"]]) diff --git a/crates/ruff_linter/src/rules/refurb/rules/readlines_in_for.rs b/crates/ruff_linter/src/rules/refurb/rules/readlines_in_for.rs index 76431b2ec9..f945b8fdb2 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/readlines_in_for.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/readlines_in_for.rs @@ -86,27 +86,23 @@ fn readlines_in_iter(checker: &Checker, iter_expr: &Expr) { return; } } - let edit = if let Some(parenthesized_range) = parenthesized_range( + + let deletion_range = if let Some(parenthesized_range) = parenthesized_range( expr_attr.value.as_ref().into(), expr_attr.into(), checker.comment_ranges(), checker.source(), ) { - let deletion_range = expr_call.range().add_start(parenthesized_range.len()); - let padded = pad_end(String::new(), deletion_range.end(), checker.locator()); - if padded.is_empty() { - Edit::range_deletion(deletion_range) - } else { - Edit::range_replacement(padded, deletion_range) - } + expr_call.range().add_start(parenthesized_range.len()) } else { - let deletion_range = expr_call.range().add_start(expr_attr.value.range().len()); - let padded = pad_end(String::new(), deletion_range.end(), checker.locator()); - if padded.is_empty() { - Edit::range_deletion(deletion_range) - } else { - Edit::range_replacement(padded, deletion_range) - } + expr_call.range().add_start(expr_attr.value.range().len()) + }; + + let padded = pad_end(String::new(), deletion_range.end(), checker.locator()); + let edit = if padded.is_empty() { + Edit::range_deletion(deletion_range) + } else { + Edit::range_replacement(padded, deletion_range) }; let mut diagnostic = checker.report_diagnostic(ReadlinesInFor, expr_call.range()); diff --git a/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__FURB129_FURB129.py.snap b/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__FURB129_FURB129.py.snap index 412c2ea5fa..ce9c375ba0 100644 --- a/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__FURB129_FURB129.py.snap +++ b/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__FURB129_FURB129.py.snap @@ -307,7 +307,6 @@ FURB129.py:103:16: FURB129 [*] Instead of calling `readlines()`, iterate over fi 103 | for line in(f).readlines(): | ^^^^^^^^^^^^^^^ FURB129 104 | pass -105 | # Test case for issue #17683 - missing space before keyword | = help: Remove `readlines()` @@ -318,26 +317,20 @@ FURB129.py:103:16: FURB129 [*] Instead of calling `readlines()`, iterate over fi 103 |- for line in(f).readlines(): 103 |+ for line in(f): 104 104 | pass -105 105 | # Test case for issue #17683 - missing space before keyword -106 106 | print([line for line in f.readlines()if True]) +105 105 | +106 106 | # Test case for issue #17683 (missing space before keyword) -FURB129.py:106:29: FURB129 [*] Instead of calling `readlines()`, iterate over file object directly +FURB129.py:107:29: FURB129 [*] Instead of calling `readlines()`, iterate over file object directly | -104 | pass -105 | # Test case for issue #17683 - missing space before keyword -106 | print([line for line in f.readlines()if True]) +106 | # Test case for issue #17683 (missing space before keyword) +107 | print([line for line in f.readlines()if True]) | ^^^^^^^^^^^^^ FURB129 -107 | print([line for line in f.readlines()and True]) -108 | print([line for line in f.readlines()or True]) | = help: Remove `readlines()` ℹ Unsafe fix -103 103 | for line in(f).readlines(): 104 104 | pass -105 105 | # Test case for issue #17683 - missing space before keyword -106 |- print([line for line in f.readlines()if True]) - 106 |+ print([line for line in f if True]) -107 107 | print([line for line in f.readlines()and True]) -108 108 | print([line for line in f.readlines()or True]) -109 109 | print([line for line in f.readlines()in ["test"]]) +105 105 | +106 106 | # Test case for issue #17683 (missing space before keyword) +107 |- print([line for line in f.readlines()if True]) + 107 |+ print([line for line in f if True]) diff --git a/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__preview__FURB129_FURB129.py.snap b/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__preview__FURB129_FURB129.py.snap index 2f6f162df7..f466c31940 100644 --- a/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__preview__FURB129_FURB129.py.snap +++ b/crates/ruff_linter/src/rules/refurb/snapshots/ruff_linter__rules__refurb__tests__preview__FURB129_FURB129.py.snap @@ -307,7 +307,6 @@ FURB129.py:103:16: FURB129 [*] Instead of calling `readlines()`, iterate over fi 103 | for line in(f).readlines(): | ^^^^^^^^^^^^^^^ FURB129 104 | pass -105 | # Test case for issue #17683 - missing space before keyword | = help: Remove `readlines()` @@ -318,26 +317,20 @@ FURB129.py:103:16: FURB129 [*] Instead of calling `readlines()`, iterate over fi 103 |- for line in(f).readlines(): 103 |+ for line in(f): 104 104 | pass -105 105 | # Test case for issue #17683 - missing space before keyword -106 106 | print([line for line in f.readlines()if True]) +105 105 | +106 106 | # Test case for issue #17683 (missing space before keyword) -FURB129.py:106:29: FURB129 [*] Instead of calling `readlines()`, iterate over file object directly +FURB129.py:107:29: FURB129 [*] Instead of calling `readlines()`, iterate over file object directly | -104 | pass -105 | # Test case for issue #17683 - missing space before keyword -106 | print([line for line in f.readlines()if True]) +106 | # Test case for issue #17683 (missing space before keyword) +107 | print([line for line in f.readlines()if True]) | ^^^^^^^^^^^^^ FURB129 -107 | print([line for line in f.readlines()and True]) -108 | print([line for line in f.readlines()or True]) | = help: Remove `readlines()` ℹ Safe fix -103 103 | for line in(f).readlines(): 104 104 | pass -105 105 | # Test case for issue #17683 - missing space before keyword -106 |- print([line for line in f.readlines()if True]) - 106 |+ print([line for line in f if True]) -107 107 | print([line for line in f.readlines()and True]) -108 108 | print([line for line in f.readlines()or True]) -109 109 | print([line for line in f.readlines()in ["test"]]) +105 105 | +106 106 | # Test case for issue #17683 (missing space before keyword) +107 |- print([line for line in f.readlines()if True]) + 107 |+ print([line for line in f if True])