Treat nested classes and functions as "standard" siblings (#1095)

This commit is contained in:
Charlie Marsh 2022-12-05 20:45:12 -05:00 committed by GitHub
parent 88e78c5cde
commit 38ad10f60d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 62 additions and 10 deletions

View File

@ -27,3 +27,15 @@ if True:
import os
def f():
pass
if True:
x = 1
import collections
import typing
class X: pass
if True:
x = 1
import collections
import typing
def f(): pass

View File

@ -47,4 +47,34 @@ expression: checks
end_location:
row: 16
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

View File

@ -60,12 +60,17 @@ where
// Track manual splits.
while self.split_index < self.directives.splits.len() {
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.
self.finalize(Some(if stmt.location.column() == 0 {
match &stmt.node {
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
Trailer::FunctionDef
}
StmtKind::ClassDef { .. } => Trailer::ClassDef,
_ => Trailer::Sibling,
}
} else {
Trailer::Sibling
}));
self.split_index += 1;
} else {
@ -81,12 +86,17 @@ where
{
self.track_import(stmt);
} else {
self.finalize(Some(match &stmt.node {
// TODO(charlie): Track nesting semantically, rather than via column index.
self.finalize(Some(if stmt.location.column() == 0 {
match &stmt.node {
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
Trailer::FunctionDef
}
StmtKind::ClassDef { .. } => Trailer::ClassDef,
_ => Trailer::Sibling,
}
} else {
Trailer::Sibling
}));
}