void
ExpandVisitor::visit (AST::IdentifierExpr &ident_expr)
-{}
+{
+ visit_outer_attrs (ident_expr);
+}
void
ExpandVisitor::visit (AST::Lifetime &)
void
ExpandVisitor::visit (AST::PathInExpression &path)
{
+ visit_outer_attrs (path);
for (auto &segment : path.get_segments ())
if (segment.has_generic_args ())
expand_generic_args (segment.get_generic_args ());
void
ExpandVisitor::visit (AST::QualifiedPathInExpression &path)
{
+ visit_outer_attrs (path);
expand_qualified_path_type (path.get_qualified_path_type ());
for (auto &segment : path.get_segments ())
void
ExpandVisitor::visit (AST::LiteralExpr &expr)
-{}
+{
+ visit_outer_attrs (expr);
+}
void
ExpandVisitor::visit (AST::AttrInputLiteral &)
void
ExpandVisitor::visit (AST::BorrowExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_borrowed_expr ());
}
void
ExpandVisitor::visit (AST::DereferenceExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_dereferenced_expr ());
}
void
ExpandVisitor::visit (AST::ErrorPropagationExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_propagating_expr ());
}
void
ExpandVisitor::visit (AST::NegationExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_negated_expr ());
}
void
ExpandVisitor::visit (AST::ArithmeticOrLogicalExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_left_expr ());
maybe_expand_expr (expr.get_right_expr ());
}
void
ExpandVisitor::visit (AST::ComparisonExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_left_expr ());
maybe_expand_expr (expr.get_right_expr ());
}
void
ExpandVisitor::visit (AST::LazyBooleanExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_left_expr ());
maybe_expand_expr (expr.get_right_expr ());
}
void
ExpandVisitor::visit (AST::TypeCastExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_casted_expr ());
visit (expr.get_type_to_cast_to ());
void
ExpandVisitor::visit (AST::AssignmentExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_left_expr ());
maybe_expand_expr (expr.get_right_expr ());
}
void
ExpandVisitor::visit (AST::CompoundAssignmentExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_left_expr ());
maybe_expand_expr (expr.get_right_expr ());
}
void
ExpandVisitor::visit (AST::GroupedExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_expr_in_parens ());
}
void
ExpandVisitor::visit (AST::ArrayExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_array_elems ());
}
void
ExpandVisitor::visit (AST::ArrayIndexExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_array_expr ());
visit (expr.get_index_expr ());
}
void
ExpandVisitor::visit (AST::TupleExpr &expr)
{
+ visit_outer_attrs (expr);
for (auto &element : expr.get_tuple_elems ())
visit (element);
}
void
ExpandVisitor::visit (AST::TupleIndexExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_tuple_expr ());
// We can't have macro invocations for tuple indexes, right? Need a test!
void
ExpandVisitor::visit (AST::StructExprStruct &expr)
-{}
+{
+ visit_outer_attrs (expr);
+}
void
ExpandVisitor::visit (AST::StructExprFieldIdentifier &)
void
ExpandVisitor::visit (AST::CallExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_function_expr ());
for (auto ¶m : expr.get_params ())
void
ExpandVisitor::visit (AST::MethodCallExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_receiver_expr ());
for (auto ¶m : expr.get_params ())
void
ExpandVisitor::visit (AST::FieldAccessExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_receiver_expr ());
}
void
ExpandVisitor::visit (AST::ClosureExprInner &expr)
{
+ visit_outer_attrs (expr);
expand_closure_params (expr.get_params ());
visit (expr.get_definition_expr ());
void
ExpandVisitor::visit (AST::ClosureExprInnerTyped &expr)
{
+ visit_outer_attrs (expr);
expand_closure_params (expr.get_params ());
maybe_expand_type (expr.get_return_type ());
void
ExpandVisitor::visit (AST::ContinueExpr &expr)
-{}
+{
+ visit_outer_attrs (expr);
+}
void
ExpandVisitor::visit (AST::BreakExpr &expr)
{
+ visit_outer_attrs (expr);
if (expr.has_break_expr ())
visit (expr.get_break_expr ());
}
void
ExpandVisitor::visit (AST::ReturnExpr &expr)
{
+ visit_outer_attrs (expr);
if (expr.has_returned_expr ())
visit (expr.get_returned_expr ());
}
void
ExpandVisitor::visit (AST::UnsafeBlockExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_block_expr ());
}
void
ExpandVisitor::visit (AST::LoopExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_loop_block ());
}
void
ExpandVisitor::visit (AST::WhileLetLoopExpr &expr)
{
+ visit_outer_attrs (expr);
for (auto &pattern : expr.get_patterns ())
visit (pattern);
void
ExpandVisitor::visit (AST::ForLoopExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_pattern ());
visit (expr.get_iterator_expr ());
visit (expr.get_loop_block ());
void
ExpandVisitor::visit (AST::IfExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_condition_expr ());
visit (expr.get_if_block ());
void
ExpandVisitor::visit (AST::IfLetExpr &expr)
{
+ visit_outer_attrs (expr);
maybe_expand_expr (expr.get_value_expr ());
visit (expr.get_if_block ());
void
ExpandVisitor::visit (AST::MatchExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_scrutinee_expr ());
for (auto &match_case : expr.get_match_cases ())
void
ExpandVisitor::visit (AST::AwaitExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_awaited_expr ());
}
void
ExpandVisitor::visit (AST::AsyncBlockExpr &expr)
{
+ visit_outer_attrs (expr);
visit (expr.get_block_expr ());
}