use alloc::vec::Vec;
use crate::path_search::search::{SearchArgs, SearchResult};
use crate::syntax::SyntaxNode;
pub fn search(args: &SearchArgs<'_>) -> Vec<SearchResult> {
let Some(SyntaxNode::UsingStatement {
declaration_id: Some(var_id),
..
}) = args.graph.nodes.get(&args.n_id)
else {
return Vec::new();
};
let var_id = *var_id;
let mut out: Vec<SearchResult> = Vec::new();
if args.graph.nodes.get(&var_id).and_then(SyntaxNode::variable) == Some(args.symbol) {
out.push((true, args.n_id));
}
if let Some(SyntaxNode::Assignment { variable_id, .. }) = args.graph.nodes.get(&var_id) {
if args
.graph
.nodes
.get(variable_id)
.and_then(SyntaxNode::symbol)
== Some(args.symbol)
{
out.push((true, args.n_id));
}
}
out
}