[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:
Andrew Gallant 2025-08-23 08:33:59 -04:00 committed by Andrew Gallant
parent 205eae14d2
commit e7237652a9

View file

@ -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);
} }
_ => { _ => {