mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-01 14:21:24 +00:00
[ty] Lightly refactor document symbols AST visitor
This makes use of early continue/return to keep rightward drift under control. (I also find it easier to read.)
This commit is contained in:
parent
205eae14d2
commit
e7237652a9
1 changed files with 47 additions and 47 deletions
|
@ -456,60 +456,60 @@ impl SourceOrderVisitor<'_> for SymbolVisitor {
|
||||||
|
|
||||||
Stmt::Assign(assign) => {
|
Stmt::Assign(assign) => {
|
||||||
// Include assignments only when we're in global or class scope
|
// Include assignments only when we're in global or class scope
|
||||||
if !self.in_function {
|
if self.in_function {
|
||||||
for target in &assign.targets {
|
return;
|
||||||
if let Expr::Name(name) = target {
|
}
|
||||||
let kind = if Self::is_constant_name(name.id.as_str()) {
|
for target in &assign.targets {
|
||||||
SymbolKind::Constant
|
let Expr::Name(name) = target else { continue };
|
||||||
} else if self
|
let kind = if Self::is_constant_name(name.id.as_str()) {
|
||||||
.iter_symbol_stack()
|
SymbolKind::Constant
|
||||||
.any(|s| s.kind == SymbolKind::Class)
|
} else if self
|
||||||
{
|
.iter_symbol_stack()
|
||||||
SymbolKind::Field
|
.any(|s| s.kind == SymbolKind::Class)
|
||||||
} else {
|
{
|
||||||
SymbolKind::Variable
|
SymbolKind::Field
|
||||||
};
|
} else {
|
||||||
|
SymbolKind::Variable
|
||||||
|
};
|
||||||
|
|
||||||
let symbol = SymbolTree {
|
let symbol = SymbolTree {
|
||||||
parent: None,
|
parent: None,
|
||||||
name: name.id.to_string(),
|
name: name.id.to_string(),
|
||||||
kind,
|
kind,
|
||||||
name_range: name.range(),
|
name_range: name.range(),
|
||||||
full_range: stmt.range(),
|
full_range: stmt.range(),
|
||||||
};
|
};
|
||||||
|
self.add_symbol(symbol);
|
||||||
self.add_symbol(symbol);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Stmt::AnnAssign(ann_assign) => {
|
Stmt::AnnAssign(ann_assign) => {
|
||||||
// Include assignments only when we're in global or class scope
|
// Include assignments only when we're in global or class scope
|
||||||
if !self.in_function {
|
if self.in_function {
|
||||||
if let Expr::Name(name) = &*ann_assign.target {
|
return;
|
||||||
let kind = if Self::is_constant_name(name.id.as_str()) {
|
|
||||||
SymbolKind::Constant
|
|
||||||
} else if self
|
|
||||||
.iter_symbol_stack()
|
|
||||||
.any(|s| s.kind == SymbolKind::Class)
|
|
||||||
{
|
|
||||||
SymbolKind::Field
|
|
||||||
} else {
|
|
||||||
SymbolKind::Variable
|
|
||||||
};
|
|
||||||
|
|
||||||
let symbol = SymbolTree {
|
|
||||||
parent: None,
|
|
||||||
name: name.id.to_string(),
|
|
||||||
kind,
|
|
||||||
name_range: name.range(),
|
|
||||||
full_range: stmt.range(),
|
|
||||||
};
|
|
||||||
|
|
||||||
self.add_symbol(symbol);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
let Expr::Name(name) = &*ann_assign.target else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
let kind = if Self::is_constant_name(name.id.as_str()) {
|
||||||
|
SymbolKind::Constant
|
||||||
|
} else if self
|
||||||
|
.iter_symbol_stack()
|
||||||
|
.any(|s| s.kind == SymbolKind::Class)
|
||||||
|
{
|
||||||
|
SymbolKind::Field
|
||||||
|
} else {
|
||||||
|
SymbolKind::Variable
|
||||||
|
};
|
||||||
|
|
||||||
|
let symbol = SymbolTree {
|
||||||
|
parent: None,
|
||||||
|
name: name.id.to_string(),
|
||||||
|
kind,
|
||||||
|
name_range: name.range(),
|
||||||
|
full_range: stmt.range(),
|
||||||
|
};
|
||||||
|
self.add_symbol(symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => {
|
_ => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue