aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve-expr.cc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-02-22 18:55:53 +0100
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-03-13 11:58:12 +0000
commit75dc00584e0e7a73ddcbef358abae24762b27bcd (patch)
tree3fe9451d4e13f681abf77959819acddc03d32b25 /gcc/rust/resolve/rust-ast-resolve-expr.cc
parent843d7d7b46133fc471ed51d165a979c5af059aea (diff)
downloadgcc-75dc00584e0e7a73ddcbef358abae24762b27bcd.zip
gcc-75dc00584e0e7a73ddcbef358abae24762b27bcd.tar.gz
gcc-75dc00584e0e7a73ddcbef358abae24762b27bcd.tar.bz2
Replace unique_ptr references with references
This kind of double indirection is pointless and prone to error. This commit change the api of all getters from the AST to use references directly instead of references to unique pointers. gcc/rust/ChangeLog: * ast/rust-ast-collector.cc (TokenCollector::visit): Remove reference to unique pointer and replace it with a direct reference to the wrapped data. * ast/rust-ast.cc (VariadicParam::as_string): Likewise. (BlockExpr::normalize_tail_expr): Likewise. * ast/rust-expr.h: Likewise and add pointer getter in order to allow pointer reseat. * ast/rust-item.h: Likewise and add pointer getter for reseat. * ast/rust-path.h: Likewise. * ast/rust-pattern.h: Likewise. * ast/rust-stmt.h: Likewise. * ast/rust-type.h: Likewise. * expand/rust-cfg-strip.cc (CfgStrip::maybe_strip_struct_fields): Remove references to unique pointers and replace it with direct references to the wrapped object. (CfgStrip::maybe_strip_tuple_fields): Likewise. (CfgStrip::maybe_strip_generic_args): Likewise. (CfgStrip::maybe_strip_qualified_path_type): Likewise. (CfgStrip::visit): Likewise. * expand/rust-expand-visitor.cc (ExpandVisitor::maybe_expand_expr): Likewise. (ExpandVisitor::maybe_expand_type): Likewise. (ExpandVisitor::visit): Likewise. * expand/rust-expand-visitor.h: Likewise. * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_binding): Likewise. (ASTLoweringBase::lower_generic_args): Likewise. (ASTLoweringBase::lower_self): Likewise. (ASTLoweringBase::lower_type_no_bounds): Likewise. (ASTLoweringBase::lower_bound): Likewise. (ASTLoweringBase::lower_range_pattern_bound): Likewise. * hir/rust-ast-lower-base.h: Likewise. * hir/rust-ast-lower-block.h: Likewise. * hir/rust-ast-lower-enumitem.h: Likewise. * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::translate): Likewise. (ASTLoweringExpr::visit): Likewise. * hir/rust-ast-lower-expr.h: Likewise. * hir/rust-ast-lower-extern.h: Likewise. * hir/rust-ast-lower-implitem.cc (ASTLowerImplItem::translate): Likewise. (ASTLowerImplItem::visit): Likewise. (ASTLowerTraitItem::translate): Likewise. (ASTLowerTraitItem::visit): Likewise. * hir/rust-ast-lower-implitem.h: Likewise. * hir/rust-ast-lower-item.cc (ASTLoweringItem::translate): Likewise. (ASTLoweringItem::visit): Likewise. * hir/rust-ast-lower-item.h: Likewise. * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::translate): Likewise. (ASTLoweringPattern::visit): Likewise. * hir/rust-ast-lower-pattern.h: Likewise. * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise. * hir/rust-ast-lower-struct-field-expr.h: Likewise. * hir/rust-ast-lower-type.cc (ASTLowerTypePath::visit): Likewise. (ASTLowerQualifiedPathInType::visit): Likewise. (ASTLoweringType::translate): Likewise. (ASTLoweringType::visit): Likewise. (ASTLowerGenericParam::translate): Likewise. (ASTLowerGenericParam::visit): Likewise. (ASTLoweringTypeBounds::translate): Likewise. (ASTLoweringTypeBounds::visit): Likewise. (ASTLowerWhereClauseItem::visit): Likewise. * hir/rust-ast-lower-type.h: Likewise. * hir/rust-ast-lower.cc (ASTLowering::go): Likewise. (ASTLoweringBlock::visit): Likewise. (ASTLoweringIfBlock::visit): Likewise. (ASTLoweringIfLetBlock::visit): Likewise. (ASTLowerStructExprField::visit): Likewise. (ASTLoweringExprWithBlock::visit): Likewise. (ASTLoweringBase::lower_qual_path_type): Likewise. (ASTLoweringBase::lower_closure_param): Likewise. * resolve/rust-ast-resolve-base.cc (ResolverBase::resolve_visibility): Likewise. * resolve/rust-ast-resolve-expr.cc (ResolveExpr::go): Likewise. (ResolveExpr::visit): Likewise. (ResolveExpr::resolve_closure_param): Likewise. * resolve/rust-ast-resolve-expr.h: Likewise. * resolve/rust-ast-resolve-implitem.h: Likewise. * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise. (ResolveItem::go): Likewise. (ResolveItem::visit): Likewise. (ResolveItem::resolve_impl_item): Likewise. (ResolveItem::resolve_extern_item): Likewise. (ResolveImplItems::go): Likewise. (ResolveExternItem::go): Likewise. (ResolveExternItem::visit): Likewise. * resolve/rust-ast-resolve-item.h: Likewise. * resolve/rust-ast-resolve-path.cc (ResolvePath::go): Likewise. (ResolvePath::resolve_path): Likewise. * resolve/rust-ast-resolve-path.h: Likewise. * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): Likewise. (PatternDeclaration::visit): Likewise. (resolve_range_pattern_bound): Likewise. * resolve/rust-ast-resolve-pattern.h: Likewise. * resolve/rust-ast-resolve-stmt.cc (ResolveStmt::visit): Likewise. * resolve/rust-ast-resolve-stmt.h: Likewise. * resolve/rust-ast-resolve-struct-expr-field.cc (ResolveStructExprField::go): Likewise. (ResolveStructExprField::visit): Likewise. * resolve/rust-ast-resolve-struct-expr-field.h: Likewise. * resolve/rust-ast-resolve-toplevel.h: Likewise. * resolve/rust-ast-resolve-type.cc (ResolveType::visit): Likewise. (ResolveRelativeTypePath::go): Likewise. (ResolveRelativeQualTypePath::resolve_qual_seg): Likewise. (ResolveTypeToCanonicalPath::go): Likewise. (ResolveTypeToCanonicalPath::visit): Likewise. (ResolveGenericArgs::resolve_disambiguated_generic): Likewise. (ResolveGenericArgs::go): Likewise. * resolve/rust-ast-resolve-type.h: Likewise. * resolve/rust-ast-resolve.cc (NameResolution::go): Likewise. * resolve/rust-default-resolver.cc (DefaultResolver::visit): Likewise. * resolve/rust-early-name-resolver.cc (EarlyNameResolver::resolve_qualified_path_type): Likewise. (EarlyNameResolver::visit): Likewise. * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Likewise. * checks/errors/rust-ast-validation.cc: Likewise. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-expr.cc')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-expr.cc160
1 files changed, 76 insertions, 84 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc b/gcc/rust/resolve/rust-ast-resolve-expr.cc
index dd1d797..d42e7fe 100644
--- a/gcc/rust/resolve/rust-ast-resolve-expr.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc
@@ -28,17 +28,17 @@ namespace Rust {
namespace Resolver {
void
-ResolveExpr::go (AST::Expr *expr, const CanonicalPath &prefix,
+ResolveExpr::go (AST::Expr &expr, const CanonicalPath &prefix,
const CanonicalPath &canonical_prefix, bool funny_error)
{
ResolveExpr resolver (prefix, canonical_prefix, funny_error);
- expr->accept_vis (resolver);
+ expr.accept_vis (resolver);
}
void
ResolveExpr::visit (AST::TupleIndexExpr &expr)
{
- ResolveExpr::go (expr.get_tuple_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_tuple_expr (), prefix, canonical_prefix);
}
void
@@ -48,41 +48,40 @@ ResolveExpr::visit (AST::TupleExpr &expr)
return;
for (auto &elem : expr.get_tuple_elems ())
- ResolveExpr::go (elem.get (), prefix, canonical_prefix);
+ ResolveExpr::go (*elem, prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::PathInExpression &expr)
{
- ResolvePath::go (&expr);
+ ResolvePath::go (expr);
}
void
ResolveExpr::visit (AST::QualifiedPathInExpression &expr)
{
- ResolvePath::go (&expr);
+ ResolvePath::go (expr);
}
void
ResolveExpr::visit (AST::ReturnExpr &expr)
{
if (expr.has_returned_expr ())
- ResolveExpr::go (expr.get_returned_expr ().get (), prefix,
- canonical_prefix);
+ ResolveExpr::go (expr.get_returned_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::CallExpr &expr)
{
- ResolveExpr::go (expr.get_function_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_function_expr (), prefix, canonical_prefix);
for (auto &param : expr.get_params ())
- ResolveExpr::go (param.get (), prefix, canonical_prefix);
+ ResolveExpr::go (*param, prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::MethodCallExpr &expr)
{
- ResolveExpr::go (expr.get_receiver_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_receiver_expr (), prefix, canonical_prefix);
if (expr.get_method_name ().has_generic_args ())
{
@@ -92,14 +91,14 @@ ResolveExpr::visit (AST::MethodCallExpr &expr)
auto const &in_params = expr.get_params ();
for (auto &param : in_params)
- ResolveExpr::go (param.get (), prefix, canonical_prefix);
+ ResolveExpr::go (*param, prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::AssignmentExpr &expr)
{
- ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_left_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_right_expr (), prefix, canonical_prefix);
}
/* The "break rust" Easter egg.
@@ -178,63 +177,63 @@ ResolveExpr::visit (AST::IdentifierExpr &expr)
void
ResolveExpr::visit (AST::ArithmeticOrLogicalExpr &expr)
{
- ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_left_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_right_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::CompoundAssignmentExpr &expr)
{
- ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_left_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_right_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::ComparisonExpr &expr)
{
- ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_left_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_right_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::LazyBooleanExpr &expr)
{
- ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_left_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_right_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::NegationExpr &expr)
{
- ResolveExpr::go (expr.get_negated_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_negated_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::TypeCastExpr &expr)
{
- ResolveType::go (expr.get_type_to_cast_to ().get ());
- ResolveExpr::go (expr.get_casted_expr ().get (), prefix, canonical_prefix);
+ ResolveType::go (expr.get_type_to_cast_to ());
+ ResolveExpr::go (expr.get_casted_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::IfExpr &expr)
{
- ResolveExpr::go (expr.get_condition_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_condition_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_if_block (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::IfExprConseqElse &expr)
{
- ResolveExpr::go (expr.get_condition_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_else_block ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_condition_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_if_block (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_else_block (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::IfLetExpr &expr)
{
- ResolveExpr::go (expr.get_value_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_value_expr (), prefix, canonical_prefix);
NodeId scope_node_id = expr.get_node_id ();
resolver->get_name_scope ().push (scope_node_id);
@@ -251,10 +250,10 @@ ResolveExpr::visit (AST::IfLetExpr &expr)
for (auto &pattern : expr.get_patterns ())
{
- PatternDeclaration::go (pattern.get (), Rib::ItemType::Var, bindings);
+ PatternDeclaration::go (*pattern, Rib::ItemType::Var, bindings);
}
- ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_if_block (), prefix, canonical_prefix);
resolver->get_name_scope ().pop ();
resolver->get_type_scope ().pop ();
@@ -264,7 +263,7 @@ ResolveExpr::visit (AST::IfLetExpr &expr)
void
ResolveExpr::visit (AST::IfLetExprConseqElse &expr)
{
- ResolveExpr::go (expr.get_value_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_value_expr (), prefix, canonical_prefix);
NodeId scope_node_id = expr.get_node_id ();
resolver->get_name_scope ().push (scope_node_id);
@@ -281,11 +280,11 @@ ResolveExpr::visit (AST::IfLetExprConseqElse &expr)
for (auto &pattern : expr.get_patterns ())
{
- PatternDeclaration::go (pattern.get (), Rib::ItemType::Var, bindings);
+ PatternDeclaration::go (*pattern, Rib::ItemType::Var, bindings);
}
- ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_else_block ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_if_block (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_else_block (), prefix, canonical_prefix);
resolver->get_name_scope ().pop ();
resolver->get_type_scope ().pop ();
@@ -328,19 +327,19 @@ ResolveExpr::visit (AST::BlockExpr &expr)
for (auto &s : expr.get_statements ())
{
if (s->is_item ())
- ResolveStmt::go (s.get (), prefix, canonical_prefix,
+ ResolveStmt::go (*s, prefix, canonical_prefix,
CanonicalPath::create_empty ());
}
for (auto &s : expr.get_statements ())
{
if (!s->is_item ())
- ResolveStmt::go (s.get (), prefix, canonical_prefix,
+ ResolveStmt::go (*s, prefix, canonical_prefix,
CanonicalPath::create_empty ());
}
if (expr.has_tail_expr ())
- ResolveExpr::go (expr.get_tail_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_tail_expr (), prefix, canonical_prefix);
resolver->get_name_scope ().pop ();
resolver->get_type_scope ().pop ();
@@ -350,14 +349,14 @@ ResolveExpr::visit (AST::BlockExpr &expr)
void
ResolveExpr::visit (AST::UnsafeBlockExpr &expr)
{
- expr.get_block_expr ()->accept_vis (*this);
+ expr.get_block_expr ().accept_vis (*this);
}
void
ResolveExpr::visit (AST::ArrayElemsValues &elems)
{
for (auto &elem : elems.get_values ())
- ResolveExpr::go (elem.get (), prefix, canonical_prefix);
+ ResolveExpr::go (*elem, prefix, canonical_prefix);
}
void
@@ -369,55 +368,53 @@ ResolveExpr::visit (AST::ArrayExpr &expr)
void
ResolveExpr::visit (AST::ArrayIndexExpr &expr)
{
- ResolveExpr::go (expr.get_array_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_index_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_array_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_index_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::ArrayElemsCopied &expr)
{
- ResolveExpr::go (expr.get_num_copies ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_elem_to_copy ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_num_copies (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_elem_to_copy (), prefix, canonical_prefix);
}
// this this an empty struct constructor like 'S {}'
void
ResolveExpr::visit (AST::StructExprStruct &struct_expr)
{
- ResolveExpr::go (&struct_expr.get_struct_name (), prefix, canonical_prefix);
+ ResolveExpr::go (struct_expr.get_struct_name (), prefix, canonical_prefix);
}
// this this a struct constructor with fields
void
ResolveExpr::visit (AST::StructExprStructFields &struct_expr)
{
- ResolveExpr::go (&struct_expr.get_struct_name (), prefix, canonical_prefix);
+ ResolveExpr::go (struct_expr.get_struct_name (), prefix, canonical_prefix);
if (struct_expr.has_struct_base ())
{
AST::StructBase &base = struct_expr.get_struct_base ();
- ResolveExpr::go (base.get_base_struct ().get (), prefix,
- canonical_prefix);
+ ResolveExpr::go (base.get_base_struct (), prefix, canonical_prefix);
}
auto const &struct_fields = struct_expr.get_fields ();
for (auto &struct_field : struct_fields)
{
- ResolveStructExprField::go (struct_field.get (), prefix,
- canonical_prefix);
+ ResolveStructExprField::go (*struct_field, prefix, canonical_prefix);
}
}
void
ResolveExpr::visit (AST::GroupedExpr &expr)
{
- ResolveExpr::go (expr.get_expr_in_parens ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_expr_in_parens (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::FieldAccessExpr &expr)
{
- ResolveExpr::go (expr.get_receiver_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_receiver_expr (), prefix, canonical_prefix);
}
void
@@ -444,7 +441,7 @@ ResolveExpr::visit (AST::LoopExpr &expr)
rust_error_at (locus, "was defined here");
});
}
- ResolveExpr::go (expr.get_loop_block ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_loop_block (), prefix, canonical_prefix);
}
void
@@ -477,7 +474,7 @@ ResolveExpr::visit (AST::BreakExpr &expr)
if (expr.has_break_expr ())
{
bool funny_error = false;
- AST::Expr &break_expr = *expr.get_break_expr ().get ();
+ auto &break_expr = expr.get_break_expr ();
if (break_expr.get_ast_kind () == AST::Kind::IDENTIFIER)
{
/* This is a break with an expression, and the expression is just a
@@ -491,7 +488,7 @@ ResolveExpr::visit (AST::BreakExpr &expr)
if (ident == "rust" || ident == "gcc")
funny_error = true;
}
- ResolveExpr::go (&break_expr, prefix, canonical_prefix, funny_error);
+ ResolveExpr::go (break_expr, prefix, canonical_prefix, funny_error);
}
}
@@ -520,8 +517,8 @@ ResolveExpr::visit (AST::WhileLoopExpr &expr)
});
}
- ResolveExpr::go (expr.get_predicate_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_loop_block ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_predicate_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_loop_block (), prefix, canonical_prefix);
}
void
@@ -559,9 +556,9 @@ ResolveExpr::visit (AST::ForLoopExpr &expr)
resolver->push_new_label_rib (resolver->get_type_scope ().peek ());
// resolve the expression
- PatternDeclaration::go (expr.get_pattern ().get (), Rib::ItemType::Var);
- ResolveExpr::go (expr.get_iterator_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_loop_block ().get (), prefix, canonical_prefix);
+ PatternDeclaration::go (expr.get_pattern (), Rib::ItemType::Var);
+ ResolveExpr::go (expr.get_iterator_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_loop_block (), prefix, canonical_prefix);
// done
resolver->get_name_scope ().pop ();
@@ -600,20 +597,19 @@ ResolveExpr::visit (AST::ContinueExpr &expr)
void
ResolveExpr::visit (AST::BorrowExpr &expr)
{
- ResolveExpr::go (expr.get_borrowed_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_borrowed_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::DereferenceExpr &expr)
{
- ResolveExpr::go (expr.get_dereferenced_expr ().get (), prefix,
- canonical_prefix);
+ ResolveExpr::go (expr.get_dereferenced_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::MatchExpr &expr)
{
- ResolveExpr::go (expr.get_scrutinee_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_scrutinee_expr (), prefix, canonical_prefix);
for (auto &match_case : expr.get_match_cases ())
{
// each arm is in its own scope
@@ -628,8 +624,7 @@ ResolveExpr::visit (AST::MatchExpr &expr)
// resolve
AST::MatchArm &arm = match_case.get_arm ();
if (arm.has_match_arm_guard ())
- ResolveExpr::go (arm.get_guard_expr ().get (), prefix,
- canonical_prefix);
+ ResolveExpr::go (arm.get_guard_expr (), prefix, canonical_prefix);
// We know expr.get_patterns () has one pattern at most
// so there's no reason to handle it like an AltPattern.
@@ -639,11 +634,11 @@ ResolveExpr::visit (AST::MatchExpr &expr)
// insert any possible new patterns
for (auto &pattern : arm.get_patterns ())
{
- PatternDeclaration::go (pattern.get (), Rib::ItemType::Var, bindings);
+ PatternDeclaration::go (*pattern, Rib::ItemType::Var, bindings);
}
// resolve the body
- ResolveExpr::go (match_case.get_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (match_case.get_expr (), prefix, canonical_prefix);
// done
resolver->get_name_scope ().pop ();
@@ -655,20 +650,20 @@ ResolveExpr::visit (AST::MatchExpr &expr)
void
ResolveExpr::visit (AST::RangeFromToExpr &expr)
{
- ResolveExpr::go (expr.get_from_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_to_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_from_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_to_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::RangeFromExpr &expr)
{
- ResolveExpr::go (expr.get_from_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_from_expr (), prefix, canonical_prefix);
}
void
ResolveExpr::visit (AST::RangeToExpr &expr)
{
- ResolveExpr::go (expr.get_to_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_to_expr (), prefix, canonical_prefix);
}
void
@@ -680,8 +675,8 @@ ResolveExpr::visit (AST::RangeFullExpr &)
void
ResolveExpr::visit (AST::RangeFromToInclExpr &expr)
{
- ResolveExpr::go (expr.get_from_expr ().get (), prefix, canonical_prefix);
- ResolveExpr::go (expr.get_to_expr ().get (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_from_expr (), prefix, canonical_prefix);
+ ResolveExpr::go (expr.get_to_expr (), prefix, canonical_prefix);
}
void
@@ -705,8 +700,7 @@ ResolveExpr::visit (AST::ClosureExprInner &expr)
resolver->push_closure_context (expr.get_node_id ());
- ResolveExpr::go (expr.get_definition_expr ().get (), prefix,
- canonical_prefix);
+ ResolveExpr::go (expr.get_definition_expr (), prefix, canonical_prefix);
resolver->pop_closure_context ();
@@ -734,12 +728,11 @@ ResolveExpr::visit (AST::ClosureExprInnerTyped &expr)
resolve_closure_param (p, bindings);
}
- ResolveType::go (expr.get_return_type ().get ());
+ ResolveType::go (expr.get_return_type ());
resolver->push_closure_context (expr.get_node_id ());
- ResolveExpr::go (expr.get_definition_block ().get (), prefix,
- canonical_prefix);
+ ResolveExpr::go (expr.get_definition_block (), prefix, canonical_prefix);
resolver->pop_closure_context ();
@@ -752,11 +745,10 @@ void
ResolveExpr::resolve_closure_param (AST::ClosureParam &param,
std::vector<PatternBinding> &bindings)
{
- PatternDeclaration::go (param.get_pattern ().get (), Rib::ItemType::Param,
- bindings);
+ PatternDeclaration::go (param.get_pattern (), Rib::ItemType::Param, bindings);
if (param.has_type_given ())
- ResolveType::go (param.get_type ().get ());
+ ResolveType::go (param.get_type ());
}
ResolveExpr::ResolveExpr (const CanonicalPath &prefix,