mirror of https://github.com/astral-sh/ruff
Treat nested classes and functions as "standard" siblings (#1095)
This commit is contained in:
parent
88e78c5cde
commit
38ad10f60d
|
|
@ -27,3 +27,15 @@ if True:
|
||||||
import os
|
import os
|
||||||
def f():
|
def f():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
if True:
|
||||||
|
x = 1
|
||||||
|
import collections
|
||||||
|
import typing
|
||||||
|
class X: pass
|
||||||
|
|
||||||
|
if True:
|
||||||
|
x = 1
|
||||||
|
import collections
|
||||||
|
import typing
|
||||||
|
def f(): pass
|
||||||
|
|
|
||||||
|
|
@ -47,4 +47,34 @@ expression: checks
|
||||||
end_location:
|
end_location:
|
||||||
row: 16
|
row: 16
|
||||||
column: 0
|
column: 0
|
||||||
|
- kind: UnsortedImports
|
||||||
|
location:
|
||||||
|
row: 33
|
||||||
|
column: 0
|
||||||
|
end_location:
|
||||||
|
row: 35
|
||||||
|
column: 0
|
||||||
|
fix:
|
||||||
|
content: " import collections\n import typing\n\n"
|
||||||
|
location:
|
||||||
|
row: 33
|
||||||
|
column: 0
|
||||||
|
end_location:
|
||||||
|
row: 35
|
||||||
|
column: 0
|
||||||
|
- kind: UnsortedImports
|
||||||
|
location:
|
||||||
|
row: 39
|
||||||
|
column: 0
|
||||||
|
end_location:
|
||||||
|
row: 41
|
||||||
|
column: 0
|
||||||
|
fix:
|
||||||
|
content: " import collections\n import typing\n\n"
|
||||||
|
location:
|
||||||
|
row: 39
|
||||||
|
column: 0
|
||||||
|
end_location:
|
||||||
|
row: 41
|
||||||
|
column: 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,12 +60,17 @@ where
|
||||||
// Track manual splits.
|
// Track manual splits.
|
||||||
while self.split_index < self.directives.splits.len() {
|
while self.split_index < self.directives.splits.len() {
|
||||||
if stmt.location.row() >= self.directives.splits[self.split_index] {
|
if stmt.location.row() >= self.directives.splits[self.split_index] {
|
||||||
self.finalize(Some(match &stmt.node {
|
// TODO(charlie): Track nesting semantically, rather than via column index.
|
||||||
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
|
self.finalize(Some(if stmt.location.column() == 0 {
|
||||||
Trailer::FunctionDef
|
match &stmt.node {
|
||||||
|
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
|
||||||
|
Trailer::FunctionDef
|
||||||
|
}
|
||||||
|
StmtKind::ClassDef { .. } => Trailer::ClassDef,
|
||||||
|
_ => Trailer::Sibling,
|
||||||
}
|
}
|
||||||
StmtKind::ClassDef { .. } => Trailer::ClassDef,
|
} else {
|
||||||
_ => Trailer::Sibling,
|
Trailer::Sibling
|
||||||
}));
|
}));
|
||||||
self.split_index += 1;
|
self.split_index += 1;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -81,12 +86,17 @@ where
|
||||||
{
|
{
|
||||||
self.track_import(stmt);
|
self.track_import(stmt);
|
||||||
} else {
|
} else {
|
||||||
self.finalize(Some(match &stmt.node {
|
// TODO(charlie): Track nesting semantically, rather than via column index.
|
||||||
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
|
self.finalize(Some(if stmt.location.column() == 0 {
|
||||||
Trailer::FunctionDef
|
match &stmt.node {
|
||||||
|
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
|
||||||
|
Trailer::FunctionDef
|
||||||
|
}
|
||||||
|
StmtKind::ClassDef { .. } => Trailer::ClassDef,
|
||||||
|
_ => Trailer::Sibling,
|
||||||
}
|
}
|
||||||
StmtKind::ClassDef { .. } => Trailer::ClassDef,
|
} else {
|
||||||
_ => Trailer::Sibling,
|
Trailer::Sibling
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue