use crate::node::Node;
pub trait Visitor {
fn visit_node(&mut self, node: &Node) {
walk(self, node);
}
}
pub fn walk<V: Visitor + ?Sized>(v: &mut V, node: &Node) {
if let Some(inner) = node.kind.as_reader_macro_inner() {
v.visit_node(inner);
return;
}
if let Some(items) = node.kind.as_seq_body() {
for item in items {
v.visit_node(item);
}
}
}