use tree_sitter::Node;
pub(super) fn declared_idents<'tree>(node: Node<'tree>, _src: &[u8]) -> Vec<Node<'tree>> {
let mut out = Vec::new();
if matches!(node.kind(), "declaration" | "parameter_declaration") {
let mut cursor = node.walk();
out.extend(
node.children_by_field_name("declarator", &mut cursor)
.filter_map(declarator_ident),
);
}
out
}
fn declarator_ident(node: Node<'_>) -> Option<Node<'_>> {
match node.kind() {
"identifier" => Some(node),
"function_declarator" => None,
_ => declarator_ident(node.child_by_field_name("declarator")?),
}
}