summaryrefslogtreecommitdiff
path: root/src/syntax/visit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntax/visit.rs')
-rw-r--r--src/syntax/visit.rs108
1 files changed, 50 insertions, 58 deletions
diff --git a/src/syntax/visit.rs b/src/syntax/visit.rs
index 3a289eb1..70159d2d 100644
--- a/src/syntax/visit.rs
+++ b/src/syntax/visit.rs
@@ -3,17 +3,17 @@
use super::*;
macro_rules! visit {
- ($(fn $name:ident($v:ident, $item:ident: &$ty:ty) $body:block)*) => {
+ ($(fn $name:ident($v:ident, $node:ident: &$ty:ty) $body:block)*) => {
/// Traverses the syntax tree.
pub trait Visit<'ast> {
- $(fn $name(&mut self, $item: &'ast $ty) {
- $name(self, $item);
+ $(fn $name(&mut self, $node: &'ast $ty) {
+ $name(self, $node);
})*
}
$(visit! {
@concat!("Walk a node of type [`", stringify!($ty), "`]."),
- pub fn $name<'ast, V>($v: &mut V, $item: &'ast $ty)
+ pub fn $name<'ast, V>($v: &mut V, $node: &'ast $ty)
where
V: Visit<'ast> + ?Sized
$body
@@ -27,14 +27,14 @@ macro_rules! visit {
}
visit! {
- fn visit_tree(v, item: &Tree) {
- for node in item {
- v.visit_node(&node.v);
+ fn visit_tree(v, node: &Tree) {
+ for node in node {
+ v.visit_node(&node);
}
}
- fn visit_node(v, item: &Node) {
- match item {
+ fn visit_node(v, node: &Node) {
+ match node {
Node::Strong => {}
Node::Emph => {}
Node::Space => {}
@@ -47,18 +47,10 @@ visit! {
}
}
- fn visit_expr(v, item: &Expr) {
- match item {
- Expr::None => {}
+ fn visit_expr(v, node: &Expr) {
+ match node {
+ Expr::Lit(_) => {}
Expr::Ident(_) => {}
- Expr::Bool(_) => {}
- Expr::Int(_) => {}
- Expr::Float(_) => {}
- Expr::Length(_, _) => {}
- Expr::Angle(_, _) => {}
- Expr::Percent(_) => {}
- Expr::Color(_) => {}
- Expr::Str(_) => {}
Expr::Array(e) => v.visit_array(e),
Expr::Dict(e) => v.visit_dict(e),
Expr::Template(e) => v.visit_template(e),
@@ -73,75 +65,75 @@ visit! {
}
}
- fn visit_array(v, item: &ExprArray) {
- for expr in item {
- v.visit_expr(&expr.v);
+ fn visit_array(v, node: &ExprArray) {
+ for expr in &node.items {
+ v.visit_expr(&expr);
}
}
- fn visit_dict(v, item: &ExprDict) {
- for named in item {
- v.visit_expr(&named.expr.v);
+ fn visit_dict(v, node: &ExprDict) {
+ for named in &node.items {
+ v.visit_expr(&named.expr);
}
}
- fn visit_template(v, item: &ExprTemplate) {
- v.visit_tree(item);
+ fn visit_template(v, node: &ExprTemplate) {
+ v.visit_tree(&node.tree);
}
- fn visit_group(v, item: &ExprGroup) {
- v.visit_expr(&item.v);
+ fn visit_group(v, node: &ExprGroup) {
+ v.visit_expr(&node.expr);
}
- fn visit_block(v, item: &ExprBlock) {
- for expr in &item.exprs {
- v.visit_expr(&expr.v);
+ fn visit_block(v, node: &ExprBlock) {
+ for expr in &node.exprs {
+ v.visit_expr(&expr);
}
}
- fn visit_binary(v, item: &ExprBinary) {
- v.visit_expr(&item.lhs.v);
- v.visit_expr(&item.rhs.v);
+ fn visit_binary(v, node: &ExprBinary) {
+ v.visit_expr(&node.lhs);
+ v.visit_expr(&node.rhs);
}
- fn visit_unary(v, item: &ExprUnary) {
- v.visit_expr(&item.expr.v);
+ fn visit_unary(v, node: &ExprUnary) {
+ v.visit_expr(&node.expr);
}
- fn visit_call(v, item: &ExprCall) {
- v.visit_expr(&item.callee.v);
- v.visit_args(&item.args.v);
+ fn visit_call(v, node: &ExprCall) {
+ v.visit_expr(&node.callee);
+ v.visit_args(&node.args);
}
- fn visit_args(v, item: &ExprArgs) {
- for arg in item {
+ fn visit_args(v, node: &ExprArgs) {
+ for arg in &node.items {
v.visit_arg(arg);
}
}
- fn visit_arg(v, item: &Argument) {
- match item {
- Argument::Pos(expr) => v.visit_expr(&expr.v),
- Argument::Named(named) => v.visit_expr(&named.expr.v),
+ fn visit_arg(v, node: &Argument) {
+ match node {
+ Argument::Pos(expr) => v.visit_expr(&expr),
+ Argument::Named(named) => v.visit_expr(&named.expr),
}
}
- fn visit_let(v, item: &ExprLet) {
- if let Some(init) = &item.init {
- v.visit_expr(&init.v);
+ fn visit_let(v, node: &ExprLet) {
+ if let Some(init) = &node.init {
+ v.visit_expr(&init);
}
}
- fn visit_if(v, item: &ExprIf) {
- v.visit_expr(&item.condition.v);
- v.visit_expr(&item.if_body.v);
- if let Some(body) = &item.else_body {
- v.visit_expr(&body.v);
+ fn visit_if(v, node: &ExprIf) {
+ v.visit_expr(&node.condition);
+ v.visit_expr(&node.if_body);
+ if let Some(body) = &node.else_body {
+ v.visit_expr(&body);
}
}
- fn visit_for(v, item: &ExprFor) {
- v.visit_expr(&item.iter.v);
- v.visit_expr(&item.body.v);
+ fn visit_for(v, node: &ExprFor) {
+ v.visit_expr(&node.iter);
+ v.visit_expr(&node.body);
}
}