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 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

View File

@ -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

View File

@ -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.
self.finalize(Some(if stmt.location.column() == 0 {
match &stmt.node {
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => { StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
Trailer::FunctionDef Trailer::FunctionDef
} }
StmtKind::ClassDef { .. } => Trailer::ClassDef, StmtKind::ClassDef { .. } => Trailer::ClassDef,
_ => Trailer::Sibling, _ => Trailer::Sibling,
}
} else {
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.
self.finalize(Some(if stmt.location.column() == 0 {
match &stmt.node {
StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => { StmtKind::FunctionDef { .. } | StmtKind::AsyncFunctionDef { .. } => {
Trailer::FunctionDef Trailer::FunctionDef
} }
StmtKind::ClassDef { .. } => Trailer::ClassDef, StmtKind::ClassDef { .. } => Trailer::ClassDef,
_ => Trailer::Sibling, _ => Trailer::Sibling,
}
} else {
Trailer::Sibling
})); }));
} }