https://gcc.gnu.org/g:8dc275b79db6a89ea0a1218edd74af1b259c774e
commit 8dc275b79db6a89ea0a1218edd74af1b259c774e Author: Arthur Cohen <arthur.co...@embecosm.com> Date: Thu Jan 23 11:44:33 2025 +0000 lower: Error out when lowering ErrorPropagationExpr Adapt functions for lowering nodes that should never reach the lowering phase to cause an unreachable, and mark them as final so as it not possible to override them in other visitors. gcc/rust/ChangeLog: * hir/rust-ast-lower-base.cc: Adapt functions for ErrorPropagationExpr and MacroInvocation. * hir/rust-ast-lower-base.h: Mark them as final. * hir/rust-ast-lower-expr.cc: Remove previous definition for those overrides. * hir/rust-ast-lower-expr.h: Likewise. Diff: --- gcc/rust/hir/rust-ast-lower-base.cc | 13 +- gcc/rust/hir/rust-ast-lower-base.h | 356 ++++++++++++++++++------------------ gcc/rust/hir/rust-ast-lower-expr.cc | 15 -- gcc/rust/hir/rust-ast-lower-expr.h | 1 - 4 files changed, 188 insertions(+), 197 deletions(-) diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc index ce8a20e60941..52781da1eaf5 100644 --- a/gcc/rust/hir/rust-ast-lower-base.cc +++ b/gcc/rust/hir/rust-ast-lower-base.cc @@ -23,6 +23,7 @@ #include "rust-ast.h" #include "rust-attribute-values.h" #include "rust-diagnostics.h" +#include "rust-expr.h" #include "rust-item.h" #include "rust-system.h" #include "rust-attributes.h" @@ -30,7 +31,6 @@ namespace Rust { namespace HIR { -// We special case lowering macro invocations as that should NEVER happen void ASTLoweringBase::visit (AST::MacroInvocation &invoc) { @@ -38,6 +38,14 @@ ASTLoweringBase::visit (AST::MacroInvocation &invoc) rust_unreachable (); } +void +ASTLoweringBase::visit (AST::ErrorPropagationExpr &expr) +{ + rust_fatal_error (expr.get_locus (), + "missing desugar for question mark operator"); + rust_unreachable (); +} + void ASTLoweringBase::visit (AST::Token &) {} @@ -116,9 +124,6 @@ void ASTLoweringBase::visit (AST::DereferenceExpr &) {} void -ASTLoweringBase::visit (AST::ErrorPropagationExpr &) -{} -void ASTLoweringBase::visit (AST::NegationExpr &) {} void diff --git a/gcc/rust/hir/rust-ast-lower-base.h b/gcc/rust/hir/rust-ast-lower-base.h index b197b4a1e0c2..a3e786f21eba 100644 --- a/gcc/rust/hir/rust-ast-lower-base.h +++ b/gcc/rust/hir/rust-ast-lower-base.h @@ -60,202 +60,204 @@ class ASTLoweringBase : public AST::ASTVisitor public: virtual ~ASTLoweringBase () {} + // Special casing nodes that should never reach the HIR lowering stage + virtual void visit (AST::MacroInvocation &) override final; + virtual void visit (AST::ErrorPropagationExpr &) override final; + // visitor impl // rust-ast.h // virtual void visit(AttrInput& attr_input); // virtual void visit(TokenTree& token_tree); // virtual void visit(MacroMatch& macro_match); - virtual void visit (AST::Token &tok); - virtual void visit (AST::DelimTokenTree &delim_tok_tree); - virtual void visit (AST::AttrInputMetaItemContainer &input); - // virtual void visit(MetaItem& meta_item); - // void vsit(Stmt& stmt); - // virtual void visit(Expr& expr); - virtual void visit (AST::IdentifierExpr &ident_expr); - // virtual void visit(Pattern& pattern); - // virtual void visit(Type& type); - // virtual void visit(TypeParamBound& type_param_bound); - virtual void visit (AST::Lifetime &lifetime); - // virtual void visit(GenericParam& generic_param); - virtual void visit (AST::LifetimeParam &lifetime_param); - virtual void visit (AST::ConstGenericParam &const_param); - // virtual void visit(TraitItem& trait_item); - // virtual void visit(InherentImplItem& inherent_impl_item); - // virtual void visit(TraitImplItem& trait_impl_item); + virtual void visit (AST::Token &tok) override; + virtual void visit (AST::DelimTokenTree &delim_tok_tree) override; + virtual void visit (AST::AttrInputMetaItemContainer &input) override; + // virtual void visit(MetaItem& meta_item) override; + // void vsit(Stmt& stmt) override; + // virtual void visit(Expr& expr) override; + virtual void visit (AST::IdentifierExpr &ident_expr) override; + // virtual void visit(Pattern& pattern) override; + // virtual void visit(Type& type) override; + // virtual void visit(TypeParamBound& type_param_bound) override; + virtual void visit (AST::Lifetime &lifetime) override; + // virtual void visit(GenericParam& generic_param) override; + virtual void visit (AST::LifetimeParam &lifetime_param) override; + virtual void visit (AST::ConstGenericParam &const_param) override; + // virtual void visit(TraitItem& trait_item) override; + // virtual void visit(InherentImplItem& inherent_impl_item) override; + // virtual void visit(TraitImplItem& trait_impl_item) override; // rust-path.h - virtual void visit (AST::PathInExpression &path); - virtual void visit (AST::TypePathSegment &segment); - virtual void visit (AST::TypePathSegmentGeneric &segment); - virtual void visit (AST::TypePathSegmentFunction &segment); - virtual void visit (AST::TypePath &path); - virtual void visit (AST::QualifiedPathInExpression &path); - virtual void visit (AST::QualifiedPathInType &path); + virtual void visit (AST::PathInExpression &path) override; + virtual void visit (AST::TypePathSegment &segment) override; + virtual void visit (AST::TypePathSegmentGeneric &segment) override; + virtual void visit (AST::TypePathSegmentFunction &segment) override; + virtual void visit (AST::TypePath &path) override; + virtual void visit (AST::QualifiedPathInExpression &path) override; + virtual void visit (AST::QualifiedPathInType &path) override; // rust-expr.h - virtual void visit (AST::LiteralExpr &expr); - virtual void visit (AST::AttrInputLiteral &attr_input); - virtual void visit (AST::AttrInputMacro &attr_input); - virtual void visit (AST::MetaItemLitExpr &meta_item); - virtual void visit (AST::MetaItemPathLit &meta_item); - virtual void visit (AST::BorrowExpr &expr); - virtual void visit (AST::DereferenceExpr &expr); - virtual void visit (AST::ErrorPropagationExpr &expr); - virtual void visit (AST::NegationExpr &expr); - virtual void visit (AST::ArithmeticOrLogicalExpr &expr); - virtual void visit (AST::ComparisonExpr &expr); - virtual void visit (AST::LazyBooleanExpr &expr); - virtual void visit (AST::TypeCastExpr &expr); - virtual void visit (AST::AssignmentExpr &expr); - virtual void visit (AST::CompoundAssignmentExpr &expr); - virtual void visit (AST::GroupedExpr &expr); - // virtual void visit(ArrayElems& elems); - virtual void visit (AST::ArrayElemsValues &elems); - virtual void visit (AST::ArrayElemsCopied &elems); - virtual void visit (AST::ArrayExpr &expr); - virtual void visit (AST::ArrayIndexExpr &expr); - virtual void visit (AST::TupleExpr &expr); - virtual void visit (AST::TupleIndexExpr &expr); - virtual void visit (AST::StructExprStruct &expr); - // virtual void visit(StructExprField& field); - virtual void visit (AST::StructExprFieldIdentifier &field); - virtual void visit (AST::StructExprFieldIdentifierValue &field); - virtual void visit (AST::StructExprFieldIndexValue &field); - virtual void visit (AST::StructExprStructFields &expr); - virtual void visit (AST::StructExprStructBase &expr); - virtual void visit (AST::CallExpr &expr); - virtual void visit (AST::MethodCallExpr &expr); - virtual void visit (AST::FieldAccessExpr &expr); - virtual void visit (AST::ClosureExprInner &expr); - virtual void visit (AST::BlockExpr &expr); - virtual void visit (AST::ClosureExprInnerTyped &expr); - virtual void visit (AST::ContinueExpr &expr); - virtual void visit (AST::BreakExpr &expr); - virtual void visit (AST::RangeFromToExpr &expr); - virtual void visit (AST::RangeFromExpr &expr); - virtual void visit (AST::RangeToExpr &expr); - virtual void visit (AST::RangeFullExpr &expr); - virtual void visit (AST::RangeFromToInclExpr &expr); - virtual void visit (AST::RangeToInclExpr &expr); - virtual void visit (AST::BoxExpr &expr); - virtual void visit (AST::ReturnExpr &expr); - virtual void visit (AST::UnsafeBlockExpr &expr); - virtual void visit (AST::LoopExpr &expr); - virtual void visit (AST::WhileLoopExpr &expr); - virtual void visit (AST::WhileLetLoopExpr &expr); - virtual void visit (AST::ForLoopExpr &expr); - virtual void visit (AST::IfExpr &expr); - virtual void visit (AST::IfExprConseqElse &expr); - virtual void visit (AST::IfLetExpr &expr); - virtual void visit (AST::IfLetExprConseqElse &expr); - virtual void visit (AST::InlineAsm &expr); - // virtual void visit(MatchCase& match_case); - // virtual void visit (AST::MatchCaseBlockExpr &match_case); - // virtual void visit (AST::MatchCaseExpr &match_case); - virtual void visit (AST::MatchExpr &expr); - virtual void visit (AST::AwaitExpr &expr); - virtual void visit (AST::AsyncBlockExpr &expr); + virtual void visit (AST::LiteralExpr &expr) override; + virtual void visit (AST::AttrInputLiteral &attr_input) override; + virtual void visit (AST::AttrInputMacro &attr_input) override; + virtual void visit (AST::MetaItemLitExpr &meta_item) override; + virtual void visit (AST::MetaItemPathLit &meta_item) override; + virtual void visit (AST::BorrowExpr &expr) override; + virtual void visit (AST::DereferenceExpr &expr) override; + virtual void visit (AST::NegationExpr &expr) override; + virtual void visit (AST::ArithmeticOrLogicalExpr &expr) override; + virtual void visit (AST::ComparisonExpr &expr) override; + virtual void visit (AST::LazyBooleanExpr &expr) override; + virtual void visit (AST::TypeCastExpr &expr) override; + virtual void visit (AST::AssignmentExpr &expr) override; + virtual void visit (AST::CompoundAssignmentExpr &expr) override; + virtual void visit (AST::GroupedExpr &expr) override; + // virtual void visit(ArrayElems& elems) override; + virtual void visit (AST::ArrayElemsValues &elems) override; + virtual void visit (AST::ArrayElemsCopied &elems) override; + virtual void visit (AST::ArrayExpr &expr) override; + virtual void visit (AST::ArrayIndexExpr &expr) override; + virtual void visit (AST::TupleExpr &expr) override; + virtual void visit (AST::TupleIndexExpr &expr) override; + virtual void visit (AST::StructExprStruct &expr) override; + // virtual void visit(StructExprField& field) override; + virtual void visit (AST::StructExprFieldIdentifier &field) override; + virtual void visit (AST::StructExprFieldIdentifierValue &field) override; + virtual void visit (AST::StructExprFieldIndexValue &field) override; + virtual void visit (AST::StructExprStructFields &expr) override; + virtual void visit (AST::StructExprStructBase &expr) override; + virtual void visit (AST::CallExpr &expr) override; + virtual void visit (AST::MethodCallExpr &expr) override; + virtual void visit (AST::FieldAccessExpr &expr) override; + virtual void visit (AST::ClosureExprInner &expr) override; + virtual void visit (AST::BlockExpr &expr) override; + virtual void visit (AST::ClosureExprInnerTyped &expr) override; + virtual void visit (AST::ContinueExpr &expr) override; + virtual void visit (AST::BreakExpr &expr) override; + virtual void visit (AST::RangeFromToExpr &expr) override; + virtual void visit (AST::RangeFromExpr &expr) override; + virtual void visit (AST::RangeToExpr &expr) override; + virtual void visit (AST::RangeFullExpr &expr) override; + virtual void visit (AST::RangeFromToInclExpr &expr) override; + virtual void visit (AST::RangeToInclExpr &expr) override; + virtual void visit (AST::BoxExpr &expr) override; + virtual void visit (AST::ReturnExpr &expr) override; + virtual void visit (AST::UnsafeBlockExpr &expr) override; + virtual void visit (AST::LoopExpr &expr) override; + virtual void visit (AST::WhileLoopExpr &expr) override; + virtual void visit (AST::WhileLetLoopExpr &expr) override; + virtual void visit (AST::ForLoopExpr &expr) override; + virtual void visit (AST::IfExpr &expr) override; + virtual void visit (AST::IfExprConseqElse &expr) override; + virtual void visit (AST::IfLetExpr &expr) override; + virtual void visit (AST::IfLetExprConseqElse &expr) override; + virtual void visit (AST::InlineAsm &expr) override; + // virtual void visit(MatchCase& match_case) override; + // virtual void visit (AST::MatchCaseBlockExpr &match_case) override; + // virtual void visit (AST::MatchCaseExpr &match_case) override; + virtual void visit (AST::MatchExpr &expr) override; + virtual void visit (AST::AwaitExpr &expr) override; + virtual void visit (AST::AsyncBlockExpr &expr) override; // rust-item.h - virtual void visit (AST::TypeParam ¶m); - // virtual void visit(WhereClauseItem& item); - virtual void visit (AST::LifetimeWhereClauseItem &item); - virtual void visit (AST::TypeBoundWhereClauseItem &item); - virtual void visit (AST::Module &module); - virtual void visit (AST::ExternCrate &crate); - // virtual void visit(UseTree& use_tree); - virtual void visit (AST::UseTreeGlob &use_tree); - virtual void visit (AST::UseTreeList &use_tree); - virtual void visit (AST::UseTreeRebind &use_tree); - virtual void visit (AST::UseDeclaration &use_decl); - virtual void visit (AST::Function &function); - virtual void visit (AST::TypeAlias &type_alias); - virtual void visit (AST::StructStruct &struct_item); - virtual void visit (AST::TupleStruct &tuple_struct); - virtual void visit (AST::EnumItem &item); - virtual void visit (AST::EnumItemTuple &item); - virtual void visit (AST::EnumItemStruct &item); - virtual void visit (AST::EnumItemDiscriminant &item); - virtual void visit (AST::Enum &enum_item); - virtual void visit (AST::Union &union_item); - virtual void visit (AST::ConstantItem &const_item); - virtual void visit (AST::StaticItem &static_item); - virtual void visit (AST::TraitItemConst &item); - virtual void visit (AST::TraitItemType &item); - virtual void visit (AST::Trait &trait); - virtual void visit (AST::InherentImpl &impl); - virtual void visit (AST::TraitImpl &impl); - // virtual void visit(ExternalItem& item); - virtual void visit (AST::ExternalTypeItem &item); - virtual void visit (AST::ExternalStaticItem &item); - virtual void visit (AST::ExternBlock &block); + virtual void visit (AST::TypeParam ¶m) override; + // virtual void visit(WhereClauseItem& item) override; + virtual void visit (AST::LifetimeWhereClauseItem &item) override; + virtual void visit (AST::TypeBoundWhereClauseItem &item) override; + virtual void visit (AST::Module &module) override; + virtual void visit (AST::ExternCrate &crate) override; + // virtual void visit(UseTree& use_tree) override; + virtual void visit (AST::UseTreeGlob &use_tree) override; + virtual void visit (AST::UseTreeList &use_tree) override; + virtual void visit (AST::UseTreeRebind &use_tree) override; + virtual void visit (AST::UseDeclaration &use_decl) override; + virtual void visit (AST::Function &function) override; + virtual void visit (AST::TypeAlias &type_alias) override; + virtual void visit (AST::StructStruct &struct_item) override; + virtual void visit (AST::TupleStruct &tuple_struct) override; + virtual void visit (AST::EnumItem &item) override; + virtual void visit (AST::EnumItemTuple &item) override; + virtual void visit (AST::EnumItemStruct &item) override; + virtual void visit (AST::EnumItemDiscriminant &item) override; + virtual void visit (AST::Enum &enum_item) override; + virtual void visit (AST::Union &union_item) override; + virtual void visit (AST::ConstantItem &const_item) override; + virtual void visit (AST::StaticItem &static_item) override; + virtual void visit (AST::TraitItemConst &item) override; + virtual void visit (AST::TraitItemType &item) override; + virtual void visit (AST::Trait &trait) override; + virtual void visit (AST::InherentImpl &impl) override; + virtual void visit (AST::TraitImpl &impl) override; + // virtual void visit(ExternalItem& item) override; + virtual void visit (AST::ExternalTypeItem &item) override; + virtual void visit (AST::ExternalStaticItem &item) override; + virtual void visit (AST::ExternBlock &block) override; // rust-macro.h - virtual void visit (AST::MacroMatchFragment &match); - virtual void visit (AST::MacroMatchRepetition &match); - virtual void visit (AST::MacroMatcher &matcher); - virtual void visit (AST::MacroRulesDefinition &rules_def); - virtual void visit (AST::MacroInvocation ¯o_invoc); - virtual void visit (AST::MetaItemPath &meta_item); - virtual void visit (AST::MetaItemSeq &meta_item); - virtual void visit (AST::MetaWord &meta_item); - virtual void visit (AST::MetaNameValueStr &meta_item); - virtual void visit (AST::MetaListPaths &meta_item); - virtual void visit (AST::MetaListNameValueStr &meta_item); + virtual void visit (AST::MacroMatchFragment &match) override; + virtual void visit (AST::MacroMatchRepetition &match) override; + virtual void visit (AST::MacroMatcher &matcher) override; + virtual void visit (AST::MacroRulesDefinition &rules_def) override; + virtual void visit (AST::MetaItemPath &meta_item) override; + virtual void visit (AST::MetaItemSeq &meta_item) override; + virtual void visit (AST::MetaWord &meta_item) override; + virtual void visit (AST::MetaNameValueStr &meta_item) override; + virtual void visit (AST::MetaListPaths &meta_item) override; + virtual void visit (AST::MetaListNameValueStr &meta_item) override; // rust-pattern.h - virtual void visit (AST::LiteralPattern &pattern); - virtual void visit (AST::IdentifierPattern &pattern); - virtual void visit (AST::WildcardPattern &pattern); - virtual void visit (AST::RestPattern &pattern); - // virtual void visit(RangePatternBound& bound); - virtual void visit (AST::RangePatternBoundLiteral &bound); - virtual void visit (AST::RangePatternBoundPath &bound); - virtual void visit (AST::RangePatternBoundQualPath &bound); - virtual void visit (AST::RangePattern &pattern); - virtual void visit (AST::ReferencePattern &pattern); - // virtual void visit(StructPatternField& field); - virtual void visit (AST::StructPatternFieldTuplePat &field); - virtual void visit (AST::StructPatternFieldIdentPat &field); - virtual void visit (AST::StructPatternFieldIdent &field); - virtual void visit (AST::StructPattern &pattern); - // virtual void visit(TupleStructItems& tuple_items); - virtual void visit (AST::TupleStructItemsNoRange &tuple_items); - virtual void visit (AST::TupleStructItemsRange &tuple_items); - virtual void visit (AST::TupleStructPattern &pattern); - // virtual void visit(TuplePatternItems& tuple_items); - virtual void visit (AST::TuplePatternItemsMultiple &tuple_items); - virtual void visit (AST::TuplePatternItemsRanged &tuple_items); - virtual void visit (AST::TuplePattern &pattern); - virtual void visit (AST::GroupedPattern &pattern); - virtual void visit (AST::SlicePattern &pattern); - virtual void visit (AST::AltPattern &pattern); + virtual void visit (AST::LiteralPattern &pattern) override; + virtual void visit (AST::IdentifierPattern &pattern) override; + virtual void visit (AST::WildcardPattern &pattern) override; + virtual void visit (AST::RestPattern &pattern) override; + // virtual void visit(RangePatternBound& bound) override; + virtual void visit (AST::RangePatternBoundLiteral &bound) override; + virtual void visit (AST::RangePatternBoundPath &bound) override; + virtual void visit (AST::RangePatternBoundQualPath &bound) override; + virtual void visit (AST::RangePattern &pattern) override; + virtual void visit (AST::ReferencePattern &pattern) override; + // virtual void visit(StructPatternField& field) override; + virtual void visit (AST::StructPatternFieldTuplePat &field) override; + virtual void visit (AST::StructPatternFieldIdentPat &field) override; + virtual void visit (AST::StructPatternFieldIdent &field) override; + virtual void visit (AST::StructPattern &pattern) override; + // virtual void visit(TupleStructItems& tuple_items) override; + virtual void visit (AST::TupleStructItemsNoRange &tuple_items) override; + virtual void visit (AST::TupleStructItemsRange &tuple_items) override; + virtual void visit (AST::TupleStructPattern &pattern) override; + // virtual void visit(TuplePatternItems& tuple_items) override; + virtual void visit (AST::TuplePatternItemsMultiple &tuple_items) override; + virtual void visit (AST::TuplePatternItemsRanged &tuple_items) override; + virtual void visit (AST::TuplePattern &pattern) override; + virtual void visit (AST::GroupedPattern &pattern) override; + virtual void visit (AST::SlicePattern &pattern) override; + virtual void visit (AST::AltPattern &pattern) override; // rust-stmt.h - virtual void visit (AST::EmptyStmt &stmt); - virtual void visit (AST::LetStmt &stmt); - virtual void visit (AST::ExprStmt &stmt); + virtual void visit (AST::EmptyStmt &stmt) override; + virtual void visit (AST::LetStmt &stmt) override; + virtual void visit (AST::ExprStmt &stmt) override; // rust-type.h - virtual void visit (AST::TraitBound &bound); - virtual void visit (AST::ImplTraitType &type); - virtual void visit (AST::TraitObjectType &type); - virtual void visit (AST::ParenthesisedType &type); - virtual void visit (AST::ImplTraitTypeOneBound &type); - virtual void visit (AST::TraitObjectTypeOneBound &type); - virtual void visit (AST::TupleType &type); - virtual void visit (AST::NeverType &type); - virtual void visit (AST::RawPointerType &type); - virtual void visit (AST::ReferenceType &type); - virtual void visit (AST::ArrayType &type); - virtual void visit (AST::SliceType &type); - virtual void visit (AST::InferredType &type); - virtual void visit (AST::BareFunctionType &type); - virtual void visit (AST::FunctionParam ¶m); - virtual void visit (AST::VariadicParam ¶m); - virtual void visit (AST::SelfParam ¶m); - - virtual void visit (AST::FormatArgs &fmt); + virtual void visit (AST::TraitBound &bound) override; + virtual void visit (AST::ImplTraitType &type) override; + virtual void visit (AST::TraitObjectType &type) override; + virtual void visit (AST::ParenthesisedType &type) override; + virtual void visit (AST::ImplTraitTypeOneBound &type) override; + virtual void visit (AST::TraitObjectTypeOneBound &type) override; + virtual void visit (AST::TupleType &type) override; + virtual void visit (AST::NeverType &type) override; + virtual void visit (AST::RawPointerType &type) override; + virtual void visit (AST::ReferenceType &type) override; + virtual void visit (AST::ArrayType &type) override; + virtual void visit (AST::SliceType &type) override; + virtual void visit (AST::InferredType &type) override; + virtual void visit (AST::BareFunctionType &type) override; + virtual void visit (AST::FunctionParam ¶m) override; + virtual void visit (AST::VariadicParam ¶m) override; + virtual void visit (AST::SelfParam ¶m) override; + + virtual void visit (AST::FormatArgs &fmt) override; protected: ASTLoweringBase () diff --git a/gcc/rust/hir/rust-ast-lower-expr.cc b/gcc/rust/hir/rust-ast-lower-expr.cc index 46e35ee7af88..d0d004e71bfb 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.cc +++ b/gcc/rust/hir/rust-ast-lower-expr.cc @@ -683,21 +683,6 @@ ASTLoweringExpr::visit (AST::DereferenceExpr &expr) expr.get_outer_attrs (), expr.get_locus ()); } -void -ASTLoweringExpr::visit (AST::ErrorPropagationExpr &expr) -{ - HIR::Expr *propagating_expr - = ASTLoweringExpr::translate (expr.get_propagating_expr ()); - - auto crate_num = mappings.get_current_crate (); - Analysis::NodeMapping mapping (crate_num, expr.get_node_id (), - mappings.get_next_hir_id (crate_num), - UNKNOWN_LOCAL_DEFID); - translated = new HIR::ErrorPropagationExpr ( - mapping, std::unique_ptr<HIR::Expr> (propagating_expr), - expr.get_outer_attrs (), expr.get_locus ()); -} - void ASTLoweringExpr::visit (AST::MatchExpr &expr) { diff --git a/gcc/rust/hir/rust-ast-lower-expr.h b/gcc/rust/hir/rust-ast-lower-expr.h index 12bb9b16c4d5..dd903a0c6e2b 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.h +++ b/gcc/rust/hir/rust-ast-lower-expr.h @@ -113,7 +113,6 @@ public: void visit (AST::ContinueExpr &expr) override; void visit (AST::BorrowExpr &expr) override; void visit (AST::DereferenceExpr &expr) override; - void visit (AST::ErrorPropagationExpr &expr) override; void visit (AST::MatchExpr &expr) override; void visit (AST::RangeFromToExpr &expr) override; void visit (AST::RangeFromExpr &expr) override;