aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/hir
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2025-01-23 11:44:33 +0000
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-24 13:07:12 +0100
commit1160e4b7e1c4e254f01107d8d5ef513ddccc7388 (patch)
tree88053f489cab74bc0a6ec3e08b66bb0d66133a49 /gcc/rust/hir
parent4d6a08b4766bf8d97bc0c3d116e3f7fa43b18fef (diff)
downloadgcc-1160e4b7e1c4e254f01107d8d5ef513ddccc7388.zip
gcc-1160e4b7e1c4e254f01107d8d5ef513ddccc7388.tar.gz
gcc-1160e4b7e1c4e254f01107d8d5ef513ddccc7388.tar.bz2
gccrs: 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.
Diffstat (limited to 'gcc/rust/hir')
-rw-r--r--gcc/rust/hir/rust-ast-lower-base.cc13
-rw-r--r--gcc/rust/hir/rust-ast-lower-base.h356
-rw-r--r--gcc/rust/hir/rust-ast-lower-expr.cc15
-rw-r--r--gcc/rust/hir/rust-ast-lower-expr.h1
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 f38697c..c1fef3d 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)
{
@@ -39,6 +39,14 @@ ASTLoweringBase::visit (AST::MacroInvocation &invoc)
}
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 &)
{}
void
@@ -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 1bd1343..b3bb174 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 &param);
- // 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 &param) 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 &macro_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 &param);
- virtual void visit (AST::VariadicParam &param);
- virtual void visit (AST::SelfParam &param);
-
- 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 &param) override;
+ virtual void visit (AST::VariadicParam &param) override;
+ virtual void visit (AST::SelfParam &param) 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 4603bfc..9f363c0 100644
--- a/gcc/rust/hir/rust-ast-lower-expr.cc
+++ b/gcc/rust/hir/rust-ast-lower-expr.cc
@@ -684,21 +684,6 @@ ASTLoweringExpr::visit (AST::DereferenceExpr &expr)
}
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)
{
translated = ASTLoweringExprWithBlock::translate (expr, &terminated);
diff --git a/gcc/rust/hir/rust-ast-lower-expr.h b/gcc/rust/hir/rust-ast-lower-expr.h
index fc53786..af60e01 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;