mirror of https://github.com/astral-sh/ruff
Detect multi-target assignment as unpacking if *any* target is unpacking (#217)
This commit is contained in:
parent
edecc1bba6
commit
9bdb922c75
|
|
@ -22,3 +22,5 @@ def g():
|
||||||
|
|
||||||
bar = (1, 2)
|
bar = (1, 2)
|
||||||
(c, d) = bar
|
(c, d) = bar
|
||||||
|
|
||||||
|
(x, y) = baz = bar
|
||||||
|
|
|
||||||
|
|
@ -101,11 +101,13 @@ pub fn in_nested_block(parent_stack: &[usize], parents: &[&Stmt]) -> bool {
|
||||||
/// Check if a node represents an unpacking assignment.
|
/// Check if a node represents an unpacking assignment.
|
||||||
pub fn is_unpacking_assignment(stmt: &Stmt) -> bool {
|
pub fn is_unpacking_assignment(stmt: &Stmt) -> bool {
|
||||||
if let StmtKind::Assign { targets, value, .. } = &stmt.node {
|
if let StmtKind::Assign { targets, value, .. } = &stmt.node {
|
||||||
for child in targets {
|
if !targets.iter().any(|child| {
|
||||||
match &child.node {
|
matches!(
|
||||||
ExprKind::Set { .. } | ExprKind::List { .. } | ExprKind::Tuple { .. } => {}
|
child.node,
|
||||||
_ => return false,
|
ExprKind::Set { .. } | ExprKind::List { .. } | ExprKind::Tuple { .. }
|
||||||
}
|
)
|
||||||
|
}) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
match &value.node {
|
match &value.node {
|
||||||
ExprKind::Set { .. } | ExprKind::List { .. } | ExprKind::Tuple { .. } => return false,
|
ExprKind::Set { .. } | ExprKind::List { .. } | ExprKind::Tuple { .. } => return false,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue