Skip to content

Commit

Permalink
Add missing exit_ visitor functions
Browse files Browse the repository at this point in the history
  • Loading branch information
SpontanCombust committed Apr 24, 2024
1 parent 87a21f8 commit 34d8a79
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 1 deletion.
2 changes: 2 additions & 0 deletions crates/core/src/ast/conditionals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ impl StatementTraversal for IfConditionalNode<'_> {
if tp.traverse_else_body {
self.else_body().map(|s| { s.accept(visitor, StatementTraversalContext::IfConditionalElseBody) });
}
visitor.exit_if_stmt(self, ctx);
}
}

Expand Down Expand Up @@ -115,6 +116,7 @@ impl StatementTraversal for SwitchConditionalNode<'_> {
if tp.traverse_body {
self.body().accept(visitor, ());
}
visitor.exit_switch_stmt(self, ctx);
}
}

Expand Down
1 change: 1 addition & 0 deletions crates/core/src/ast/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,7 @@ impl StatementTraversal for FunctionBlockNode<'_> {

self.iter().for_each(|s| s.accept(visitor, iter_ctx));
}
visitor.exit_block_stmt(self, ctx);
}
}

Expand Down
3 changes: 3 additions & 0 deletions crates/core/src/ast/loops.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ impl StatementTraversal for ForLoopNode<'_> {
if tp.traverse_body {
self.body().accept(visitor, StatementTraversalContext::ForLoopBody);
}
visitor.exit_for_stmt(self, ctx);
}
}

Expand Down Expand Up @@ -115,6 +116,7 @@ impl StatementTraversal for WhileLoopNode<'_> {
if tp.traverse_body {
self.body().accept(visitor, StatementTraversalContext::WhileLoopBody);
}
visitor.exit_while_stmt(self, ctx);
}
}

Expand Down Expand Up @@ -165,5 +167,6 @@ impl StatementTraversal for DoWhileLoopNode<'_> {
if tp.traverse_body {
self.body().accept(visitor, StatementTraversalContext::DoWhileLoopBody);
}
visitor.exit_do_while_stmt(self, ctx);
}
}
7 changes: 6 additions & 1 deletion crates/core/src/ast/traversal/visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -171,21 +171,25 @@ pub trait StatementVisitor {
/// Called when visiting an expression statement inside a function.
fn visit_expr_stmt(&mut self, n: &ExpressionStatementNode, ctx: StatementTraversalContext) {}

//TODO! add missing exit_ functions
/// Called when visiting a `for` loop.
fn visit_for_stmt(&mut self, n: &ForLoopNode, ctx: StatementTraversalContext) -> ForLoopTraversalPolicy { Default::default() }
fn exit_for_stmt(&mut self, n: &ForLoopNode, ctx: StatementTraversalContext) {}

/// Called when visiting a `while` loop.
fn visit_while_stmt(&mut self, n: &WhileLoopNode, ctx: StatementTraversalContext) -> WhileLoopTraversalPolicy { Default::default() }
fn exit_while_stmt(&mut self, n: &WhileLoopNode, ctx: StatementTraversalContext) {}

/// Called when visiting a `do-while` loop.
fn visit_do_while_stmt(&mut self, n: &DoWhileLoopNode, ctx: StatementTraversalContext) -> DoWhileLoopTraversalPolicy { Default::default() }
fn exit_do_while_stmt(&mut self, n: &DoWhileLoopNode, ctx: StatementTraversalContext) {}

/// Called when visiting an `if` condition.
fn visit_if_stmt(&mut self, n: &IfConditionalNode, ctx: StatementTraversalContext) -> IfConditionalTraversalPolicy { Default::default() }
fn exit_if_stmt(&mut self, n: &IfConditionalNode, ctx: StatementTraversalContext) {}

/// Called when visiting a `switch` statement.
fn visit_switch_stmt(&mut self, n: &SwitchConditionalNode, ctx: StatementTraversalContext) -> SwitchConditionalTraversalPolicy { Default::default() }
fn exit_switch_stmt(&mut self, n: &SwitchConditionalNode, ctx: StatementTraversalContext) {}

/// Called when visiting a `case` label inside a `switch` statement.
fn visit_switch_stmt_case(&mut self, n: &SwitchConditionalCaseLabelNode) {}
Expand All @@ -207,6 +211,7 @@ pub trait StatementVisitor {

/// Called when visiting a function block. This may mean a function definition or a scope inside that function.
fn visit_block_stmt(&mut self, n: &FunctionBlockNode, ctx: FunctionBlockTraversalContext) -> FunctionBlockTraversalPolicy { Default::default() }
fn exit_block_stmt(&mut self, n: &FunctionBlockNode, ctx: FunctionBlockTraversalContext);

/// Called when visiting a NOP statement.
/// It most notably means:
Expand Down

0 comments on commit 34d8a79

Please sign in to comment.