mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-24 05:25:17 +00:00
[pyupgrade
] Avoid syntax error when the iterable is an non-parenthesized tuple (UP028
) (#15543)
## Summary Resolves #15540. ## Test Plan `cargo nextest run` and `cargo insta test`.
This commit is contained in:
parent
3950b00ee4
commit
fa239f76ea
3 changed files with 29 additions and 2 deletions
|
@ -121,3 +121,9 @@ def f():
|
|||
def f():
|
||||
for x, y in z:
|
||||
yield x, y, x + y
|
||||
|
||||
|
||||
# https://github.com/astral-sh/ruff/issues/15540
|
||||
def f():
|
||||
for a in 1,:
|
||||
yield a
|
||||
|
|
|
@ -114,6 +114,7 @@ pub(crate) fn yield_in_for_loop(checker: &mut Checker, stmt_for: &ast::StmtFor)
|
|||
}
|
||||
|
||||
let mut diagnostic = Diagnostic::new(YieldInForLoop, stmt_for.range());
|
||||
|
||||
let contents = checker.locator().slice(
|
||||
parenthesized_range(
|
||||
iter.as_ref().into(),
|
||||
|
@ -123,7 +124,12 @@ pub(crate) fn yield_in_for_loop(checker: &mut Checker, stmt_for: &ast::StmtFor)
|
|||
)
|
||||
.unwrap_or(iter.range()),
|
||||
);
|
||||
let contents = format!("yield from {contents}");
|
||||
let contents = if iter.as_tuple_expr().is_some_and(|it| !it.parenthesized) {
|
||||
format!("yield from ({contents})")
|
||||
} else {
|
||||
format!("yield from {contents}")
|
||||
};
|
||||
|
||||
diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement(
|
||||
contents,
|
||||
stmt_for.range(),
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
---
|
||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||
snapshot_kind: text
|
||||
---
|
||||
UP028_1.py:128:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||
|
|
||||
126 | # https://github.com/astral-sh/ruff/issues/15540
|
||||
127 | def f():
|
||||
128 | / for a in 1,:
|
||||
129 | | yield a
|
||||
| |_______________^ UP028
|
||||
|
|
||||
= help: Replace with `yield from`
|
||||
|
||||
ℹ Unsafe fix
|
||||
125 125 |
|
||||
126 126 | # https://github.com/astral-sh/ruff/issues/15540
|
||||
127 127 | def f():
|
||||
128 |- for a in 1,:
|
||||
129 |- yield a
|
||||
128 |+ yield from (1,)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue