fluidattacks-blends-domain 0.2.0

Blends functional core: pure AST graph to syntax graph (no_std)
Documentation
//! Counterpart of `blends/path_search/search/declaration_block.py`.

use alloc::vec;
use alloc::vec::Vec;

use crate::path_search::search::{SearchArgs, SearchResult};
use crate::query::adj_cfg;
use crate::syntax::SyntaxNode;

pub fn search(args: &SearchArgs<'_>) -> Vec<SearchResult> {
    for c_id in adj_cfg(args.graph, args.n_id, None, &[]) {
        let child = args.graph.nodes.get(&c_id);
        if child.and_then(SyntaxNode::name) == Some(args.symbol)
            || child.and_then(SyntaxNode::variable) == Some(args.symbol)
        {
            return vec![(true, c_id)];
        }
    }
    Vec::new()
}