diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-02-22 18:55:53 +0100 |
---|---|---|
committer | P-E-P <32375388+P-E-P@users.noreply.github.com> | 2024-03-13 11:58:12 +0000 |
commit | 75dc00584e0e7a73ddcbef358abae24762b27bcd (patch) | |
tree | 3fe9451d4e13f681abf77959819acddc03d32b25 /gcc/rust/hir/rust-ast-lower-pattern.cc | |
parent | 843d7d7b46133fc471ed51d165a979c5af059aea (diff) | |
download | gcc-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/hir/rust-ast-lower-pattern.cc')
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-pattern.cc | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/gcc/rust/hir/rust-ast-lower-pattern.cc b/gcc/rust/hir/rust-ast-lower-pattern.cc index d534b82..96266dc 100644 --- a/gcc/rust/hir/rust-ast-lower-pattern.cc +++ b/gcc/rust/hir/rust-ast-lower-pattern.cc @@ -25,17 +25,17 @@ namespace HIR { ASTLoweringPattern::ASTLoweringPattern () : translated (nullptr) {} HIR::Pattern * -ASTLoweringPattern::translate (AST::Pattern *pattern, bool is_let_top_level) +ASTLoweringPattern::translate (AST::Pattern &pattern, bool is_let_top_level) { ASTLoweringPattern resolver; resolver.is_let_top_level = is_let_top_level; - pattern->accept_vis (resolver); + pattern.accept_vis (resolver); rust_assert (resolver.translated != nullptr); resolver.mappings->insert_hir_pattern (resolver.translated); resolver.mappings->insert_location ( - resolver.translated->get_mappings ().get_hirid (), pattern->get_locus ()); + resolver.translated->get_mappings ().get_hirid (), pattern.get_locus ()); return resolver.translated; } @@ -60,18 +60,18 @@ ASTLoweringPattern::visit (AST::IdentifierPattern &pattern) void ASTLoweringPattern::visit (AST::PathInExpression &pattern) { - translated = ASTLowerPathInExpression::translate (&pattern); + translated = ASTLowerPathInExpression::translate (pattern); } void ASTLoweringPattern::visit (AST::TupleStructPattern &pattern) { HIR::PathInExpression *path - = ASTLowerPathInExpression::translate (&pattern.get_path ()); + = ASTLowerPathInExpression::translate (pattern.get_path ()); TupleStructItems *lowered = nullptr; auto &items = pattern.get_items (); - switch (items->get_item_type ()) + switch (items.get_item_type ()) { case AST::TupleStructItems::RANGE: { // TODO @@ -81,13 +81,12 @@ ASTLoweringPattern::visit (AST::TupleStructPattern &pattern) case AST::TupleStructItems::NO_RANGE: { AST::TupleStructItemsNoRange &items_no_range - = static_cast<AST::TupleStructItemsNoRange &> (*items.get ()); + = static_cast<AST::TupleStructItemsNoRange &> (items); std::vector<std::unique_ptr<HIR::Pattern>> patterns; for (auto &inner_pattern : items_no_range.get_patterns ()) { - HIR::Pattern *p - = ASTLoweringPattern::translate (inner_pattern.get ()); + HIR::Pattern *p = ASTLoweringPattern::translate (*inner_pattern); patterns.push_back (std::unique_ptr<HIR::Pattern> (p)); } @@ -109,7 +108,7 @@ void ASTLoweringPattern::visit (AST::StructPattern &pattern) { HIR::PathInExpression *path - = ASTLowerPathInExpression::translate (&pattern.get_path ()); + = ASTLowerPathInExpression::translate (pattern.get_path ()); auto &raw_elems = pattern.get_struct_pattern_elems (); rust_assert (!raw_elems.has_etc ()); @@ -121,7 +120,7 @@ ASTLoweringPattern::visit (AST::StructPattern &pattern) switch (field->get_item_type ()) { case AST::StructPatternField::ItemType::TUPLE_PAT: { - AST::StructPatternFieldTuplePat &tuple + auto &tuple = static_cast<AST::StructPatternFieldTuplePat &> (*field); auto crate_num = mappings->get_current_crate (); @@ -130,8 +129,8 @@ ASTLoweringPattern::visit (AST::StructPattern &pattern) crate_num), UNKNOWN_LOCAL_DEFID); - std::unique_ptr<HIR::Pattern> pat (ASTLoweringPattern::translate ( - tuple.get_index_pattern ().get ())); + std::unique_ptr<HIR::Pattern> pat ( + ASTLoweringPattern::translate (tuple.get_index_pattern ())); f = new HIR::StructPatternFieldTuplePat (mapping, tuple.get_index (), @@ -151,8 +150,8 @@ ASTLoweringPattern::visit (AST::StructPattern &pattern) crate_num), UNKNOWN_LOCAL_DEFID); - std::unique_ptr<HIR::Pattern> pat (ASTLoweringPattern::translate ( - ident.get_ident_pattern ().get ())); + std::unique_ptr<HIR::Pattern> pat ( + ASTLoweringPattern::translate (ident.get_ident_pattern ())); f = new HIR::StructPatternFieldIdentPat (mapping, ident.get_identifier (), @@ -214,20 +213,19 @@ void ASTLoweringPattern::visit (AST::TuplePattern &pattern) { std::unique_ptr<HIR::TuplePatternItems> items; - switch (pattern.get_items ()->get_pattern_type ()) + switch (pattern.get_items ().get_pattern_type ()) { case AST::TuplePatternItems::TuplePatternItemType::MULTIPLE: { AST::TuplePatternItemsMultiple &ref - = *static_cast<AST::TuplePatternItemsMultiple *> ( - pattern.get_items ().get ()); + = static_cast<AST::TuplePatternItemsMultiple &> ( + pattern.get_items ()); items = lower_tuple_pattern_multiple (ref); } break; case AST::TuplePatternItems::TuplePatternItemType::RANGED: { AST::TuplePatternItemsRanged &ref - = *static_cast<AST::TuplePatternItemsRanged *> ( - pattern.get_items ().get ()); + = static_cast<AST::TuplePatternItemsRanged &> (pattern.get_items ()); items = lower_tuple_pattern_ranged (ref); } break; @@ -258,10 +256,8 @@ ASTLoweringPattern::visit (AST::LiteralPattern &pattern) void ASTLoweringPattern::visit (AST::RangePattern &pattern) { - auto upper_bound - = lower_range_pattern_bound (pattern.get_upper_bound ().get ()); - auto lower_bound - = lower_range_pattern_bound (pattern.get_lower_bound ().get ()); + auto upper_bound = lower_range_pattern_bound (pattern.get_upper_bound ()); + auto lower_bound = lower_range_pattern_bound (pattern.get_lower_bound ()); auto crate_num = mappings->get_current_crate (); Analysis::NodeMapping mapping (crate_num, pattern.get_node_id (), @@ -277,7 +273,7 @@ void ASTLoweringPattern::visit (AST::GroupedPattern &pattern) { is_let_top_level = false; - pattern.get_pattern_in_parens ()->accept_vis (*this); + pattern.get_pattern_in_parens ().accept_vis (*this); } void @@ -289,7 +285,7 @@ ASTLoweringPattern::visit (AST::ReferencePattern &pattern) UNKNOWN_LOCAL_DEFID); HIR::Pattern *inner - = ASTLoweringPattern::translate (pattern.get_referenced_pattern ().get ()); + = ASTLoweringPattern::translate (pattern.get_referenced_pattern ()); translated = new HIR::ReferencePattern (mapping, std::unique_ptr<HIR::Pattern> (inner), @@ -315,7 +311,7 @@ ASTLoweringPattern::visit (AST::SlicePattern &pattern) std::vector<std::unique_ptr<HIR::Pattern>> items; for (auto &p : pattern.get_items ()) { - HIR::Pattern *item = ASTLoweringPattern::translate (p.get ()); + HIR::Pattern *item = ASTLoweringPattern::translate (*p); items.push_back (std::unique_ptr<HIR::Pattern> (item)); } @@ -340,8 +336,8 @@ ASTLoweringPattern::visit (AST::AltPattern &pattern) for (auto &alt : pattern.get_alts ()) { - alts.push_back (std::unique_ptr<HIR::Pattern> ( - ASTLoweringPattern::translate (alt.get ()))); + alts.push_back ( + std::unique_ptr<HIR::Pattern> (ASTLoweringPattern::translate (*alt))); } translated |