ExpandVisitor::visit (AST::MetaItemPathExpr &)
{}
-void
-ExpandVisitor::visit (AST::ErrorPropagationExpr &expr)
-{
- visit (expr.get_propagating_expr ());
-}
-
void
ExpandVisitor::visit (AST::ArithmeticOrLogicalExpr &expr)
{
maybe_expand_expr (param);
}
-void
-ExpandVisitor::visit (AST::MethodCallExpr &expr)
-{
- visit (expr.get_receiver_expr ());
-
- for (auto ¶m : expr.get_params ())
- maybe_expand_expr (param);
-}
-
void
ExpandVisitor::visit (AST::ClosureExprInner &expr)
{
visit (expr.get_else_block ());
}
-void
-ExpandVisitor::visit (AST::MatchExpr &expr)
-{
- visit (expr.get_scrutinee_expr ());
-
- for (auto &match_case : expr.get_match_cases ())
- {
- auto &arm = match_case.get_arm ();
-
- for (auto &pattern : arm.get_patterns ())
- maybe_expand_pattern (pattern);
-
- if (arm.has_match_arm_guard ())
- maybe_expand_expr (arm.get_guard_expr_ptr ());
-
- maybe_expand_expr (match_case.get_expr_ptr ());
- }
-}
-
void
ExpandVisitor::visit (AST::TupleExpr &expr)
{
#ifndef RUST_EXPAND_VISITOR_H
#define RUST_EXPAND_VISITOR_H
+#include "rust-ast-pointer-visitor.h"
#include "rust-ast-visitor.h"
#include "rust-item.h"
#include "rust-macro-expand.h"
*/
bool is_builtin (AST::Attribute &attr);
-class ExpandVisitor : public AST::DefaultASTVisitor
+class ExpandVisitor : public AST::PointerVisitor
{
public:
ExpandVisitor (MacroExpander &expander)
/* Expand all of the macro invocations currently contained in a crate */
void go (AST::Crate &crate);
- using AST::DefaultASTVisitor::visit;
+ using AST::PointerVisitor::reseat;
+ using AST::PointerVisitor::visit;
+
+ void reseat (std::unique_ptr<AST::Expr> &ptr) override
+ {
+ maybe_expand_expr (ptr);
+ }
+
+ void reseat (std::unique_ptr<AST::Type> &ptr) override
+ {
+ maybe_expand_type (ptr);
+ }
+
+ void reseat (std::unique_ptr<AST::TypeNoBounds> &ptr) override
+ {
+ maybe_expand_type (ptr);
+ }
+
+ void reseat (std::unique_ptr<AST::Pattern> &ptr) override
+ {
+ maybe_expand_pattern (ptr);
+ }
/**
* Maybe expand a macro invocation in lieu of an expression, type or pattern.
void visit (AST::AttrInputMacro &) override;
void visit (AST::MetaItemLitExpr &) override;
void visit (AST::MetaItemPathExpr &) override;
- void visit (AST::ErrorPropagationExpr &expr) override;
void visit (AST::ArithmeticOrLogicalExpr &expr) override;
void visit (AST::ComparisonExpr &expr) override;
void visit (AST::LazyBooleanExpr &expr) override;
void visit (AST::StructExprStruct &expr) override;
void visit (AST::CallExpr &expr) override;
- void visit (AST::MethodCallExpr &expr) override;
void visit (AST::ClosureExprInner &expr) override;
void visit (AST::BlockExpr &expr) override;
void visit (AST::IfExprConseqElse &expr) override;
void visit (AST::IfLetExpr &expr) override;
void visit (AST::IfLetExprConseqElse &expr) override;
- void visit (AST::MatchExpr &expr) override;
void visit (AST::TupleExpr &expr) override;
void visit (AST::TypeParam ¶m) override;
void visit (AST::LifetimeWhereClauseItem &) override;