diff options
author | Marc Poulhiès <dkm@kataplop.net> | 2021-03-10 21:41:53 +0100 |
---|---|---|
committer | Philip Herron <herron.philip@googlemail.com> | 2021-03-14 18:35:34 +0000 |
commit | 173bff7f12c2c19502825a11649ad54f612af04a (patch) | |
tree | 09e8eb459878a26068306952cb40110d120a38c5 /gcc | |
parent | b8549556123da80e60922eaa928cfd284f831303 (diff) | |
download | gcc-173bff7f12c2c19502825a11649ad54f612af04a.zip gcc-173bff7f12c2c19502825a11649ad54f612af04a.tar.gz gcc-173bff7f12c2c19502825a11649ad54f612af04a.tar.bz2 |
Fix Woverloaded-virtual warnings.
Fix warnings from -Woverloaded-virtual.
Fix #274
Diffstat (limited to 'gcc')
37 files changed, 374 insertions, 242 deletions
diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in index 5ac60ea..8b0b24a 100644 --- a/gcc/rust/Make-lang.in +++ b/gcc/rust/Make-lang.in @@ -242,7 +242,7 @@ CFLAGS-rust/rust-parse.o += $(RUST_INCLUDES) CFLAGS-rust/rust-session-manager.o += $(RUST_INCLUDES) # TODO: possibly find a way to ensure C++11 compilation level here? -RUST_CXXFLAGS = -std=c++11 -Wno-unused-parameter -Wno-overloaded-virtual +RUST_CXXFLAGS = -std=c++11 -Wno-unused-parameter # build all rust/lex files in rust folder, add cross-folder includes rust/%.o: rust/lex/%.cc diff --git a/gcc/rust/backend/rust-compile-block.h b/gcc/rust/backend/rust-compile-block.h index 879e32d..128a729 100644 --- a/gcc/rust/backend/rust-compile-block.h +++ b/gcc/rust/backend/rust-compile-block.h @@ -27,6 +27,8 @@ namespace Compile { class CompileBlock : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bblock *compile (HIR::BlockExpr *expr, Context *ctx, Bvariable *result) { @@ -35,7 +37,7 @@ public: return compiler.translated; } - void visit (HIR::BlockExpr &expr); + void visit (HIR::BlockExpr &expr) override; private: CompileBlock (Context *ctx, Bvariable *result) @@ -48,6 +50,8 @@ private: class CompileConditionalBlocks : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bstatement *compile (HIR::IfExpr *expr, Context *ctx, Bvariable *result) @@ -57,11 +61,11 @@ public: return resolver.translated; } - void visit (HIR::IfExpr &expr); + void visit (HIR::IfExpr &expr) override; - void visit (HIR::IfExprConseqElse &expr); + void visit (HIR::IfExprConseqElse &expr) override; - void visit (HIR::IfExprConseqIf &expr); + void visit (HIR::IfExprConseqIf &expr) override; private: CompileConditionalBlocks (Context *ctx, Bvariable *result) @@ -74,6 +78,8 @@ private: class CompileExprWithBlock : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bstatement *compile (HIR::ExprWithBlock *expr, Context *ctx, Bvariable *result) @@ -83,17 +89,17 @@ public: return resolver.translated; } - void visit (HIR::IfExpr &expr) + void visit (HIR::IfExpr &expr) override { translated = CompileConditionalBlocks::compile (&expr, ctx, result); } - void visit (HIR::IfExprConseqElse &expr) + void visit (HIR::IfExprConseqElse &expr) override { translated = CompileConditionalBlocks::compile (&expr, ctx, result); } - void visit (HIR::IfExprConseqIf &expr) + void visit (HIR::IfExprConseqIf &expr) override { translated = CompileConditionalBlocks::compile (&expr, ctx, result); } diff --git a/gcc/rust/backend/rust-compile-expr.h b/gcc/rust/backend/rust-compile-expr.h index b48d79e..f4353cd 100644 --- a/gcc/rust/backend/rust-compile-expr.h +++ b/gcc/rust/backend/rust-compile-expr.h @@ -30,6 +30,8 @@ namespace Compile { class CompileExpr : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bexpression *Compile (HIR::Expr *expr, Context *ctx) { @@ -38,7 +40,7 @@ public: return compiler.translated; } - void visit (HIR::TupleIndexExpr &expr) + void visit (HIR::TupleIndexExpr &expr) override { HIR::Expr *tuple_expr = expr.get_tuple_expr ().get (); TupleIndex index = expr.get_tuple_index (); @@ -49,7 +51,7 @@ public: expr.get_locus ()); } - void visit (HIR::TupleExpr &expr) + void visit (HIR::TupleExpr &expr) override { if (expr.is_unit ()) { @@ -82,7 +84,7 @@ public: expr.get_locus ()); } - void visit (HIR::ReturnExpr &expr) + void visit (HIR::ReturnExpr &expr) override { auto fncontext = ctx->peek_fn (); @@ -101,11 +103,11 @@ public: ctx->add_statement (s); } - void visit (HIR::CallExpr &expr); + void visit (HIR::CallExpr &expr) override; - void visit (HIR::MethodCallExpr &expr); + void visit (HIR::MethodCallExpr &expr) override; - void visit (HIR::IdentifierExpr &expr) + void visit (HIR::IdentifierExpr &expr) override { // need to look up the reference for this identifier NodeId ref_node_id; @@ -157,7 +159,7 @@ public: } } - void visit (HIR::LiteralExpr &expr) + void visit (HIR::LiteralExpr &expr) override { auto literal_value = expr.get_literal (); switch (expr.get_lit_type ()) @@ -241,7 +243,7 @@ public: gcc_unreachable (); } - void visit (HIR::AssignmentExpr &expr) + void visit (HIR::AssignmentExpr &expr) override { fncontext fn = ctx->peek_fn (); auto lhs = CompileExpr::Compile (expr.get_lhs (), ctx); @@ -253,7 +255,7 @@ public: ctx->add_statement (assignment); } - void visit (HIR::ArrayIndexExpr &expr) + void visit (HIR::ArrayIndexExpr &expr) override { Bexpression *array = CompileExpr::Compile (expr.get_array_expr (), ctx); Bexpression *index = CompileExpr::Compile (expr.get_index_expr (), ctx); @@ -262,7 +264,7 @@ public: expr.get_locus ()); } - void visit (HIR::ArrayExpr &expr) + void visit (HIR::ArrayExpr &expr) override { TyTy::BaseType *tyty = nullptr; if (!ctx->get_tyctx ()->lookup_type (expr.get_mappings ().get_hirid (), @@ -286,7 +288,7 @@ public: expr.get_locus ()); } - void visit (HIR::ArrayElemsValues &elems) + void visit (HIR::ArrayElemsValues &elems) override { elems.iterate ([&] (HIR::Expr *e) mutable -> bool { Bexpression *translated_expr = CompileExpr::Compile (e, ctx); @@ -295,7 +297,7 @@ public: }); } - void visit (HIR::ArrayElemsCopied &elems) + void visit (HIR::ArrayElemsCopied &elems) override { Bexpression *translated_expr = CompileExpr::Compile (elems.get_elem_to_copy (), ctx); @@ -304,7 +306,7 @@ public: constructor.push_back (translated_expr); } - void visit (HIR::ArithmeticOrLogicalExpr &expr) + void visit (HIR::ArithmeticOrLogicalExpr &expr) override { auto op = expr.get_expr_type (); auto lhs = CompileExpr::Compile (expr.get_lhs (), ctx); @@ -316,7 +318,7 @@ public: location); } - void visit (HIR::ComparisonExpr &expr) + void visit (HIR::ComparisonExpr &expr) override { auto op = expr.get_expr_type (); auto lhs = CompileExpr::Compile (expr.get_lhs (), ctx); @@ -327,7 +329,7 @@ public: = ctx->get_backend ()->comparison_expression (op, lhs, rhs, location); } - void visit (HIR::LazyBooleanExpr &expr) + void visit (HIR::LazyBooleanExpr &expr) override { auto op = expr.get_expr_type (); auto lhs = CompileExpr::Compile (expr.get_lhs (), ctx); @@ -338,7 +340,7 @@ public: = ctx->get_backend ()->lazy_boolean_expression (op, lhs, rhs, location); } - void visit (HIR::NegationExpr &expr) + void visit (HIR::NegationExpr &expr) override { auto op = expr.get_expr_type (); auto negated_expr = CompileExpr::Compile (expr.get_expr (), ctx); @@ -348,13 +350,13 @@ public: = ctx->get_backend ()->negation_expression (op, negated_expr, location); } - void visit (HIR::IfExpr &expr) + void visit (HIR::IfExpr &expr) override { auto stmt = CompileConditionalBlocks::compile (&expr, ctx, nullptr); ctx->add_statement (stmt); } - void visit (HIR::IfExprConseqElse &expr) + void visit (HIR::IfExprConseqElse &expr) override { TyTy::BaseType *if_type = nullptr; if (!ctx->get_tyctx ()->lookup_type (expr.get_mappings ().get_hirid (), @@ -391,7 +393,7 @@ public: } } - void visit (HIR::IfExprConseqIf &expr) + void visit (HIR::IfExprConseqIf &expr) override { TyTy::BaseType *if_type = nullptr; if (!ctx->get_tyctx ()->lookup_type (expr.get_mappings ().get_hirid (), @@ -428,7 +430,7 @@ public: } } - void visit (HIR::BlockExpr &expr) + void visit (HIR::BlockExpr &expr) override { TyTy::BaseType *block_tyty = nullptr; if (!ctx->get_tyctx ()->lookup_type (expr.get_mappings ().get_hirid (), @@ -465,7 +467,7 @@ public: } } - void visit (HIR::StructExprStructFields &struct_expr) + void visit (HIR::StructExprStructFields &struct_expr) override { TyTy::BaseType *tyty = nullptr; if (!ctx->get_tyctx ()->lookup_type ( @@ -492,12 +494,12 @@ public: struct_expr.get_locus ()); } - void visit (HIR::GroupedExpr &expr) + void visit (HIR::GroupedExpr &expr) override { translated = CompileExpr::Compile (expr.get_expr_in_parens ().get (), ctx); } - void visit (HIR::FieldAccessExpr &expr) + void visit (HIR::FieldAccessExpr &expr) override { // resolve the receiver back to ADT type TyTy::BaseType *receiver = nullptr; @@ -522,12 +524,12 @@ public: expr.get_locus ()); } - void visit (HIR::PathInExpression &expr) + void visit (HIR::PathInExpression &expr) override { translated = ResolvePathRef::Compile (&expr, ctx); } - void visit (HIR::LoopExpr &expr) + void visit (HIR::LoopExpr &expr) override { TyTy::BaseType *block_tyty = nullptr; if (!ctx->get_tyctx ()->lookup_type (expr.get_mappings ().get_hirid (), @@ -592,7 +594,7 @@ public: ctx->pop_loop_begin_label (); } - void visit (HIR::WhileLoopExpr &expr) + void visit (HIR::WhileLoopExpr &expr) override { fncontext fnctx = ctx->peek_fn (); if (expr.has_loop_label ()) @@ -650,7 +652,7 @@ public: ctx->add_statement (loop_stmt); } - void visit (HIR::BreakExpr &expr) + void visit (HIR::BreakExpr &expr) override { fncontext fnctx = ctx->peek_fn (); if (expr.has_break_expr ()) @@ -713,7 +715,7 @@ public: } } - void visit (HIR::ContinueExpr &expr) + void visit (HIR::ContinueExpr &expr) override { Blabel *label = ctx->peek_loop_begin_label (); if (expr.has_label ()) @@ -752,7 +754,7 @@ public: ctx->add_statement (goto_label); } - void visit (HIR::BorrowExpr &expr) + void visit (HIR::BorrowExpr &expr) override { Bexpression *main_expr = CompileExpr::Compile (expr.get_expr ().get (), ctx); @@ -761,7 +763,7 @@ public: = ctx->get_backend ()->address_expression (main_expr, expr.get_locus ()); } - void visit (HIR::DereferenceExpr &expr) + void visit (HIR::DereferenceExpr &expr) override { Bexpression *main_expr = CompileExpr::Compile (expr.get_expr ().get (), ctx); diff --git a/gcc/rust/backend/rust-compile-fnparam.h b/gcc/rust/backend/rust-compile-fnparam.h index 1ea0c9f..13bb74d 100644 --- a/gcc/rust/backend/rust-compile-fnparam.h +++ b/gcc/rust/backend/rust-compile-fnparam.h @@ -26,6 +26,8 @@ namespace Compile { class CompileFnParam : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bvariable *compile (Context *ctx, Bfunction *fndecl, HIR::FunctionParam *param, Btype *decl_type, @@ -36,7 +38,7 @@ public: return compiler.translated; } - void visit (HIR::IdentifierPattern &pattern) + void visit (HIR::IdentifierPattern &pattern) override { if (!pattern.is_mut) decl_type = ctx->get_backend ()->immutable_type (decl_type); diff --git a/gcc/rust/backend/rust-compile-implitem.h b/gcc/rust/backend/rust-compile-implitem.h index 9370e9c..202b868 100644 --- a/gcc/rust/backend/rust-compile-implitem.h +++ b/gcc/rust/backend/rust-compile-implitem.h @@ -31,6 +31,8 @@ namespace Compile { class CompileInherentImplItem : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static void Compile (TyTy::BaseType *self, HIR::InherentImplItem *item, Context *ctx, bool compile_fns) @@ -39,7 +41,7 @@ public: item->accept_vis (compiler); } - void visit (HIR::ConstantItem &constant) + void visit (HIR::ConstantItem &constant) override { TyTy::BaseType *resolved_type = nullptr; bool ok @@ -58,7 +60,7 @@ public: ctx->insert_const_decl (constant.get_mappings ().get_hirid (), const_expr); } - void visit (HIR::Function &function) + void visit (HIR::Function &function) override { if (!compile_fns) return; @@ -223,7 +225,7 @@ public: ctx->push_function (fndecl); } - void visit (HIR::Method &method) + void visit (HIR::Method &method) override { if (!compile_fns) return; diff --git a/gcc/rust/backend/rust-compile-item.h b/gcc/rust/backend/rust-compile-item.h index 384bf94..1d4fcda 100644 --- a/gcc/rust/backend/rust-compile-item.h +++ b/gcc/rust/backend/rust-compile-item.h @@ -32,6 +32,8 @@ namespace Compile { class CompileItem : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static void compile (HIR::Item *item, Context *ctx, bool compile_fns = true) { @@ -39,7 +41,7 @@ public: item->accept_vis (compiler); } - void visit (HIR::StaticItem &var) + void visit (HIR::StaticItem &var) override { TyTy::BaseType *resolved_type = nullptr; bool ok = ctx->get_tyctx ()->lookup_type (var.get_mappings ().get_hirid (), @@ -67,7 +69,7 @@ public: ctx->push_var (static_global); } - void visit (HIR::ConstantItem &constant) + void visit (HIR::ConstantItem &constant) override { TyTy::BaseType *resolved_type = nullptr; bool ok @@ -85,7 +87,7 @@ public: ctx->insert_const_decl (constant.get_mappings ().get_hirid (), const_expr); } - void visit (HIR::Function &function) + void visit (HIR::Function &function) override { if (!compile_fns) return; @@ -255,7 +257,7 @@ public: ctx->push_function (fndecl); } - void visit (HIR::InherentImpl &impl_block) + void visit (HIR::InherentImpl &impl_block) override { TyTy::BaseType *self_lookup = nullptr; if (!ctx->get_tyctx ()->lookup_type ( diff --git a/gcc/rust/backend/rust-compile-resolve-path.h b/gcc/rust/backend/rust-compile-resolve-path.h index ae469e6..da1d97e 100644 --- a/gcc/rust/backend/rust-compile-resolve-path.h +++ b/gcc/rust/backend/rust-compile-resolve-path.h @@ -27,6 +27,8 @@ namespace Compile { class ResolvePathRef : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bexpression *Compile (HIR::Expr *expr, Context *ctx) { diff --git a/gcc/rust/backend/rust-compile-stmt.h b/gcc/rust/backend/rust-compile-stmt.h index b99b975..3c2916d 100644 --- a/gcc/rust/backend/rust-compile-stmt.h +++ b/gcc/rust/backend/rust-compile-stmt.h @@ -28,6 +28,8 @@ namespace Compile { class CompileStmt : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bexpression *Compile (HIR::Stmt *stmt, Context *ctx) { @@ -37,19 +39,19 @@ public: return compiler.translated; } - void visit (HIR::ExprStmtWithBlock &stmt) + void visit (HIR::ExprStmtWithBlock &stmt) override { ok = true; translated = CompileExpr::Compile (stmt.get_expr (), ctx); } - void visit (HIR::ExprStmtWithoutBlock &stmt) + void visit (HIR::ExprStmtWithoutBlock &stmt) override { ok = true; translated = CompileExpr::Compile (stmt.get_expr (), ctx); } - void visit (HIR::LetStmt &stmt) + void visit (HIR::LetStmt &stmt) override { // marks that the statement has been looked at ok = true; diff --git a/gcc/rust/backend/rust-compile-struct-field-expr.h b/gcc/rust/backend/rust-compile-struct-field-expr.h index 0a16f6a..e377524 100644 --- a/gcc/rust/backend/rust-compile-struct-field-expr.h +++ b/gcc/rust/backend/rust-compile-struct-field-expr.h @@ -27,6 +27,8 @@ namespace Compile { class CompileStructExprField : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static Bexpression *Compile (HIR::StructExprField *field, Context *ctx) { @@ -36,11 +38,11 @@ public: return compiler.translated; } - void visit (HIR::StructExprFieldIdentifierValue &field); + void visit (HIR::StructExprFieldIdentifierValue &field) override; - void visit (HIR::StructExprFieldIndexValue &field); + void visit (HIR::StructExprFieldIndexValue &field) override; - void visit (HIR::StructExprFieldIdentifier &field); + void visit (HIR::StructExprFieldIdentifier &field) override; private: CompileStructExprField (Context *ctx) diff --git a/gcc/rust/backend/rust-compile-var-decl.h b/gcc/rust/backend/rust-compile-var-decl.h index 7069d95..ee4e65b 100644 --- a/gcc/rust/backend/rust-compile-var-decl.h +++ b/gcc/rust/backend/rust-compile-var-decl.h @@ -26,6 +26,8 @@ namespace Compile { class CompileVarDecl : public HIRCompileBase { + using Rust::Compile::HIRCompileBase::visit; + public: static ::Bvariable *compile (::Bfunction *fndecl, HIR::Stmt *stmt, Context *ctx) @@ -38,7 +40,7 @@ public: return compiler.translated; } - void visit (HIR::LetStmt &stmt) + void visit (HIR::LetStmt &stmt) override { locus = stmt.get_locus (); TyTy::BaseType *resolved_type = nullptr; @@ -50,7 +52,7 @@ public: stmt.get_pattern ()->accept_vis (*this); } - void visit (HIR::IdentifierPattern &pattern) + void visit (HIR::IdentifierPattern &pattern) override { if (!pattern.is_mut) translated_type = ctx->get_backend ()->immutable_type (translated_type); diff --git a/gcc/rust/hir/rust-ast-lower-block.h b/gcc/rust/hir/rust-ast-lower-block.h index ec0f895..25c3583 100644 --- a/gcc/rust/hir/rust-ast-lower-block.h +++ b/gcc/rust/hir/rust-ast-lower-block.h @@ -27,6 +27,8 @@ namespace HIR { class ASTLoweringBlock : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::BlockExpr *translate (AST::BlockExpr *expr, bool *terminated) { @@ -46,7 +48,7 @@ public: ~ASTLoweringBlock () {} - void visit (AST::BlockExpr &expr); + void visit (AST::BlockExpr &expr) override; private: ASTLoweringBlock () @@ -59,6 +61,8 @@ private: class ASTLoweringIfBlock : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::IfExpr *translate (AST::IfExpr *expr, bool *terminated) { @@ -77,11 +81,11 @@ public: ~ASTLoweringIfBlock () {} - void visit (AST::IfExpr &expr); + void visit (AST::IfExpr &expr) override; - void visit (AST::IfExprConseqElse &expr); + void visit (AST::IfExprConseqElse &expr) override; - void visit (AST::IfExprConseqIf &expr); + void visit (AST::IfExprConseqIf &expr) override; private: ASTLoweringIfBlock () @@ -94,6 +98,8 @@ private: class ASTLoweringExprWithBlock : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::ExprWithBlock *translate (AST::ExprWithBlock *expr, bool *terminated) @@ -114,27 +120,27 @@ public: ~ASTLoweringExprWithBlock () {} - void visit (AST::IfExpr &expr) + void visit (AST::IfExpr &expr) override { translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::IfExprConseqElse &expr) + void visit (AST::IfExprConseqElse &expr) override { translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::IfExprConseqIf &expr) + void visit (AST::IfExprConseqIf &expr) override { translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::BlockExpr &expr) + void visit (AST::BlockExpr &expr) override { translated = ASTLoweringBlock::translate (&expr, &terminated); } - void visit (AST::LoopExpr &expr) + void visit (AST::LoopExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; HIR::BlockExpr *loop_block @@ -155,7 +161,7 @@ public: std::move (outer_attribs)); } - void visit (AST::WhileLoopExpr &expr); + void visit (AST::WhileLoopExpr &expr) override; private: ASTLoweringExprWithBlock () diff --git a/gcc/rust/hir/rust-ast-lower-expr.h b/gcc/rust/hir/rust-ast-lower-expr.h index 7d19370..c55213d 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.h +++ b/gcc/rust/hir/rust-ast-lower-expr.h @@ -29,6 +29,8 @@ namespace HIR { class ArrayCapacityConstant : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static bool fold (AST::Expr *expr, size_t *folded_result) { @@ -40,7 +42,7 @@ public: virtual ~ArrayCapacityConstant () {} - void visit (AST::LiteralExpr &expr) + void visit (AST::LiteralExpr &expr) override { switch (expr.get_lit_type ()) { @@ -65,6 +67,8 @@ private: class ASTLowerPathInExpression : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::PathInExpression *translate (AST::PathInExpression *expr) { @@ -84,6 +88,8 @@ private: class ASTLoweringExpr : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::Expr *translate (AST::Expr *expr, bool *terminated = nullptr) { @@ -110,7 +116,7 @@ public: return resolver.translated; } - void visit (AST::TupleIndexExpr &expr) + void visit (AST::TupleIndexExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; @@ -129,7 +135,7 @@ public: std::move (outer_attribs), expr.get_locus ()); } - void visit (AST::TupleExpr &expr) + void visit (AST::TupleExpr &expr) override { std::vector<HIR::Attribute> inner_attribs; std::vector<HIR::Attribute> outer_attribs; @@ -151,32 +157,32 @@ public: std::move (outer_attribs), expr.get_locus ()); } - void visit (AST::IfExpr &expr) + void visit (AST::IfExpr &expr) override { translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::IfExprConseqElse &expr) + void visit (AST::IfExprConseqElse &expr) override { translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::IfExprConseqIf &expr) + void visit (AST::IfExprConseqIf &expr) override { translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::BlockExpr &expr) + void visit (AST::BlockExpr &expr) override { translated = ASTLoweringBlock::translate (&expr, &terminated); } - void visit (AST::PathInExpression &expr) + void visit (AST::PathInExpression &expr) override { translated = ASTLowerPathInExpression::translate (&expr); } - void visit (AST::ReturnExpr &expr) + void visit (AST::ReturnExpr &expr) override { terminated = true; HIR::Expr *return_expr @@ -193,7 +199,7 @@ public: std::unique_ptr<HIR::Expr> (return_expr)); } - void visit (AST::CallExpr &expr) + void visit (AST::CallExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; HIR::Expr *func @@ -216,7 +222,7 @@ public: expr.get_locus ()); } - void visit (AST::MethodCallExpr &expr) + void visit (AST::MethodCallExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; @@ -245,7 +251,7 @@ public: std::move (outer_attribs), expr.get_locus ()); } - void visit (AST::AssignmentExpr &expr) + void visit (AST::AssignmentExpr &expr) override { HIR::Expr *lhs = ASTLoweringExpr::translate (expr.get_left_expr ().get ()); HIR::Expr *rhs = ASTLoweringExpr::translate (expr.get_right_expr ().get ()); @@ -261,7 +267,7 @@ public: expr.get_locus ()); } - void visit (AST::IdentifierExpr &expr) + void visit (AST::IdentifierExpr &expr) override { auto crate_num = mappings->get_current_crate (); Analysis::NodeMapping mapping (crate_num, expr.get_node_id (), @@ -271,7 +277,7 @@ public: = new HIR::IdentifierExpr (mapping, expr.as_string (), expr.get_locus ()); } - void visit (AST::ArrayExpr &expr) + void visit (AST::ArrayExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; std::vector<HIR::Attribute> inner_attribs; @@ -290,7 +296,7 @@ public: inner_attribs, outer_attribs, expr.get_locus ()); } - void visit (AST::ArrayIndexExpr &expr) + void visit (AST::ArrayIndexExpr &expr) override { std::vector<Attribute> outer_attribs; HIR::Expr *array_expr @@ -310,7 +316,7 @@ public: outer_attribs, expr.get_locus ()); } - void visit (AST::ArrayElemsValues &elems) + void visit (AST::ArrayElemsValues &elems) override { std::vector<std::unique_ptr<HIR::Expr> > elements; elems.iterate ([&] (AST::Expr *elem) mutable -> bool { @@ -322,7 +328,7 @@ public: translated_array_elems = new HIR::ArrayElemsValues (std::move (elements)); } - void visit (AST::ArrayElemsCopied &elems) + void visit (AST::ArrayElemsCopied &elems) override { HIR::Expr *element = ASTLoweringExpr::translate (elems.get_elem_to_copy ().get ()); @@ -343,7 +349,7 @@ public: folded); } - void visit (AST::LiteralExpr &expr) + void visit (AST::LiteralExpr &expr) override { HIR::Literal::LitType type = HIR::Literal::LitType::CHAR; switch (expr.get_lit_type ()) @@ -386,7 +392,7 @@ public: expr.get_locus ()); } - void visit (AST::ArithmeticOrLogicalExpr &expr) + void visit (AST::ArithmeticOrLogicalExpr &expr) override { HIR::Expr *lhs = ASTLoweringExpr::translate (expr.get_left_expr ().get ()); rust_assert (lhs != nullptr); @@ -406,7 +412,7 @@ public: expr.get_locus ()); } - void visit (AST::ComparisonExpr &expr) + void visit (AST::ComparisonExpr &expr) override { HIR::Expr *lhs = ASTLoweringExpr::translate (expr.get_left_expr ().get ()); rust_assert (lhs != nullptr); @@ -424,7 +430,7 @@ public: expr.get_expr_type (), expr.get_locus ()); } - void visit (AST::LazyBooleanExpr &expr) + void visit (AST::LazyBooleanExpr &expr) override { HIR::Expr *lhs = ASTLoweringExpr::translate (expr.get_left_expr ().get ()); rust_assert (lhs != nullptr); @@ -442,7 +448,7 @@ public: expr.get_expr_type (), expr.get_locus ()); } - void visit (AST::NegationExpr &expr) + void visit (AST::NegationExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; @@ -461,7 +467,7 @@ public: } /* Compound assignment expression is compiled away. */ - void visit (AST::CompoundAssignmentExpr &expr) + void visit (AST::CompoundAssignmentExpr &expr) override { /* First we need to find the corresponding arithmetic or logical operator. */ @@ -520,7 +526,7 @@ public: expr.get_locus ()); } - void visit (AST::StructExprStructFields &struct_expr) + void visit (AST::StructExprStructFields &struct_expr) override { std::vector<HIR::Attribute> inner_attribs; std::vector<HIR::Attribute> outer_attribs; @@ -560,7 +566,7 @@ public: inner_attribs, outer_attribs); } - void visit (AST::GroupedExpr &expr) + void visit (AST::GroupedExpr &expr) override { std::vector<HIR::Attribute> inner_attribs; std::vector<HIR::Attribute> outer_attribs; @@ -579,7 +585,7 @@ public: std::move (outer_attribs), expr.get_locus ()); } - void visit (AST::FieldAccessExpr &expr) + void visit (AST::FieldAccessExpr &expr) override { std::vector<HIR::Attribute> inner_attribs; std::vector<HIR::Attribute> outer_attribs; @@ -598,17 +604,17 @@ public: std::move (outer_attribs), expr.get_locus ()); } - void visit (AST::LoopExpr &expr) + void visit (AST::LoopExpr &expr) override { translated = ASTLoweringExprWithBlock::translate (&expr, &terminated); } - void visit (AST::WhileLoopExpr &expr) + void visit (AST::WhileLoopExpr &expr) override { translated = ASTLoweringExprWithBlock::translate (&expr, &terminated); } - void visit (AST::BreakExpr &expr) + void visit (AST::BreakExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; HIR::Lifetime break_label = lower_lifetime (expr.get_label ()); @@ -628,7 +634,7 @@ public: std::move (outer_attribs)); } - void visit (AST::ContinueExpr &expr) + void visit (AST::ContinueExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; HIR::Lifetime break_label = lower_lifetime (expr.get_label ()); @@ -643,7 +649,7 @@ public: std::move (outer_attribs)); } - void visit (AST::BorrowExpr &expr) + void visit (AST::BorrowExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; @@ -662,7 +668,7 @@ public: std::move (outer_attribs), expr.get_locus ()); } - void visit (AST::DereferenceExpr &expr) + void visit (AST::DereferenceExpr &expr) override { std::vector<HIR::Attribute> outer_attribs; diff --git a/gcc/rust/hir/rust-ast-lower-implitem.h b/gcc/rust/hir/rust-ast-lower-implitem.h index 8a7fc36..473d14f 100644 --- a/gcc/rust/hir/rust-ast-lower-implitem.h +++ b/gcc/rust/hir/rust-ast-lower-implitem.h @@ -31,6 +31,8 @@ namespace HIR { class ASTLowerImplItem : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::InherentImplItem *translate (AST::InherentImplItem *item) { @@ -55,7 +57,7 @@ public: self.get_is_mut (), self.get_locus ()); } - void visit (AST::ConstantItem &constant) + void visit (AST::ConstantItem &constant) override { std::vector<HIR::Attribute> outer_attrs; HIR::Visibility vis = HIR::Visibility::create_public (); @@ -79,7 +81,7 @@ public: constant.get_locus ()); } - void visit (AST::Function &function) + void visit (AST::Function &function) override { // ignore for now and leave empty std::vector<std::unique_ptr<HIR::GenericParam> > generic_params; @@ -158,7 +160,7 @@ public: translated = fn; } - void visit (AST::Method &method) + void visit (AST::Method &method) override { // ignore for now and leave empty std::vector<std::unique_ptr<HIR::GenericParam> > generic_params; diff --git a/gcc/rust/hir/rust-ast-lower-item.h b/gcc/rust/hir/rust-ast-lower-item.h index e19e9f6..50e50f6 100644 --- a/gcc/rust/hir/rust-ast-lower-item.h +++ b/gcc/rust/hir/rust-ast-lower-item.h @@ -34,6 +34,8 @@ namespace HIR { class ASTLoweringItem : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::Item *translate (AST::Item *item) { @@ -51,7 +53,7 @@ public: return resolver.translated; } - void visit (AST::TupleStruct &struct_decl) + void visit (AST::TupleStruct &struct_decl) override { std::vector<std::unique_ptr<HIR::GenericParam> > generic_params; if (struct_decl.has_generics ()) @@ -107,7 +109,7 @@ public: struct_decl.get_locus ()); } - void visit (AST::StructStruct &struct_decl) + void visit (AST::StructStruct &struct_decl) override { std::vector<std::unique_ptr<HIR::GenericParam> > generic_params; if (struct_decl.has_generics ()) @@ -164,7 +166,7 @@ public: struct_decl.get_locus ()); } - void visit (AST::StaticItem &var) + void visit (AST::StaticItem &var) override { std::vector<HIR::Attribute> outer_attrs; HIR::Visibility vis = HIR::Visibility::create_public (); @@ -190,7 +192,7 @@ public: var.get_locus ()); } - void visit (AST::ConstantItem &constant) + void visit (AST::ConstantItem &constant) override { std::vector<HIR::Attribute> outer_attrs; HIR::Visibility vis = HIR::Visibility::create_public (); @@ -215,7 +217,7 @@ public: constant.get_locus ()); } - void visit (AST::Function &function) + void visit (AST::Function &function) override { // ignore for now and leave empty std::vector<HIR::Attribute> outer_attrs; @@ -300,7 +302,7 @@ public: translated = fn; } - void visit (AST::InherentImpl &impl_block) + void visit (AST::InherentImpl &impl_block) override { std::vector<HIR::Attribute> inner_attrs; std::vector<HIR::Attribute> outer_attrs; diff --git a/gcc/rust/hir/rust-ast-lower-pattern.h b/gcc/rust/hir/rust-ast-lower-pattern.h index 0d5ce0f..340fba8 100644 --- a/gcc/rust/hir/rust-ast-lower-pattern.h +++ b/gcc/rust/hir/rust-ast-lower-pattern.h @@ -27,6 +27,8 @@ namespace HIR { class ASTLoweringPattern : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::Pattern *translate (AST::Pattern *pattern) { @@ -35,7 +37,7 @@ public: return resolver.translated; } - virtual ~ASTLoweringPattern () {} + virtual ~ASTLoweringPattern () override {} void visit (AST::IdentifierPattern &pattern) { diff --git a/gcc/rust/hir/rust-ast-lower-stmt.h b/gcc/rust/hir/rust-ast-lower-stmt.h index b672456..e15714c 100644 --- a/gcc/rust/hir/rust-ast-lower-stmt.h +++ b/gcc/rust/hir/rust-ast-lower-stmt.h @@ -32,6 +32,8 @@ namespace HIR { class ASTLoweringStmt : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::Stmt *translate (AST::Stmt *stmt, bool *terminated) { @@ -44,7 +46,7 @@ public: virtual ~ASTLoweringStmt () {} - void visit (AST::ExprStmtWithBlock &stmt) + void visit (AST::ExprStmtWithBlock &stmt) override { HIR::ExprWithBlock *expr = ASTLoweringExprWithBlock::translate (stmt.get_expr ().get (), @@ -63,7 +65,7 @@ public: mappings->insert_hir_stmt (crate_num, mapping.get_hirid (), translated); } - void visit (AST::ExprStmtWithoutBlock &stmt) + void visit (AST::ExprStmtWithoutBlock &stmt) override { HIR::Expr *expr = ASTLoweringExpr::translate (stmt.get_expr ().get (), &terminated); @@ -81,7 +83,7 @@ public: mappings->insert_hir_stmt (crate_num, mapping.get_hirid (), translated); } - void visit (AST::LetStmt &stmt) + void visit (AST::LetStmt &stmt) override { std::vector<HIR::Attribute> outer_attrs; HIR::Pattern *variables diff --git a/gcc/rust/hir/rust-ast-lower-struct-field-expr.h b/gcc/rust/hir/rust-ast-lower-struct-field-expr.h index c44c9f9..3b313a7 100644 --- a/gcc/rust/hir/rust-ast-lower-struct-field-expr.h +++ b/gcc/rust/hir/rust-ast-lower-struct-field-expr.h @@ -27,6 +27,8 @@ namespace HIR { class ASTLowerStructExprField : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::StructExprField *translate (AST::StructExprField *field) { @@ -47,11 +49,11 @@ public: ~ASTLowerStructExprField () {} - void visit (AST::StructExprFieldIdentifierValue &field); + void visit (AST::StructExprFieldIdentifierValue &field) override; - void visit (AST::StructExprFieldIndexValue &field); + void visit (AST::StructExprFieldIndexValue &field) override; - void visit (AST::StructExprFieldIdentifier &field); + void visit (AST::StructExprFieldIdentifier &field) override; private: ASTLowerStructExprField () : translated (nullptr) {} diff --git a/gcc/rust/hir/rust-ast-lower-type.h b/gcc/rust/hir/rust-ast-lower-type.h index b5d0b7e..cd9b032 100644 --- a/gcc/rust/hir/rust-ast-lower-type.h +++ b/gcc/rust/hir/rust-ast-lower-type.h @@ -28,6 +28,8 @@ namespace HIR { class ASTLoweringType : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::Type *translate (AST::Type *type) { @@ -43,7 +45,7 @@ public: return resolver.translated; } - void visit (AST::BareFunctionType &fntype) + void visit (AST::BareFunctionType &fntype) override { bool is_variadic = false; std::vector<HIR::LifetimeParam> lifetime_params; @@ -94,7 +96,7 @@ public: std::unique_ptr<HIR::Type> (return_type), fntype.get_locus ()); } - void visit (AST::TupleType &tuple) + void visit (AST::TupleType &tuple) override { std::vector<std::unique_ptr<HIR::Type> > elems; for (auto &e : tuple.get_elems ()) @@ -112,7 +114,7 @@ public: tuple.get_locus ()); } - void visit (AST::TypePathSegment &segment) + void visit (AST::TypePathSegment &segment) override { HIR::PathIdentSegment ident (segment.get_ident_segment ().as_string ()); translated_segment @@ -121,7 +123,7 @@ public: segment.get_locus ()); } - void visit (AST::TypePathSegmentGeneric &segment) + void visit (AST::TypePathSegmentGeneric &segment) override { std::vector<HIR::GenericArgsBinding> binding_args; // TODO @@ -148,7 +150,7 @@ public: std::move (type_args), std::move (binding_args), segment.get_locus ()); } - void visit (AST::TypePath &path) + void visit (AST::TypePath &path) override { std::vector<std::unique_ptr<HIR::TypePathSegment> > translated_segments; @@ -179,7 +181,7 @@ public: translated); } - void visit (AST::ArrayType &type) + void visit (AST::ArrayType &type) override { HIR::Type *translated_type = ASTLoweringType::translate (type.get_elem_type ().get ()); @@ -200,7 +202,7 @@ public: translated); } - void visit (AST::ReferenceType &type) + void visit (AST::ReferenceType &type) override { HIR::Lifetime lifetime = lower_lifetime (type.get_lifetime ()); @@ -220,7 +222,7 @@ public: translated); } - void visit (AST::InferredType &type) + void visit (AST::InferredType &type) override { auto crate_num = mappings->get_current_crate (); Analysis::NodeMapping mapping (crate_num, type.get_node_id (), @@ -244,6 +246,8 @@ private: class ASTLowerGenericParam : public ASTLoweringBase { + using Rust::HIR::ASTLoweringBase::visit; + public: static HIR::GenericParam *translate (AST::GenericParam *param) { diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.h b/gcc/rust/resolve/rust-ast-resolve-expr.h index 216ab41..48cc18e 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.h +++ b/gcc/rust/resolve/rust-ast-resolve-expr.h @@ -29,6 +29,8 @@ namespace Resolver { class ResolvePath : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::PathInExpression *expr, NodeId parent) { @@ -44,6 +46,8 @@ private: class ResolveExpr : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::Expr *expr, NodeId parent) { @@ -51,12 +55,12 @@ public: expr->accept_vis (resolver); }; - void visit (AST::TupleIndexExpr &expr) + void visit (AST::TupleIndexExpr &expr) override { ResolveExpr::go (expr.get_tuple_expr ().get (), expr.get_node_id ()); } - void visit (AST::TupleExpr &expr) + void visit (AST::TupleExpr &expr) override { if (expr.is_unit ()) return; @@ -65,15 +69,18 @@ public: ResolveExpr::go (elem.get (), expr.get_node_id ()); } - void visit (AST::PathInExpression &expr) { ResolvePath::go (&expr, parent); } + void visit (AST::PathInExpression &expr) override + { + ResolvePath::go (&expr, parent); + } - void visit (AST::ReturnExpr &expr) + void visit (AST::ReturnExpr &expr) override { if (expr.has_returned_expr ()) ResolveExpr::go (expr.get_returned_expr ().get (), expr.get_node_id ()); } - void visit (AST::CallExpr &expr) + void visit (AST::CallExpr &expr) override { ResolveExpr::go (expr.get_function_expr ().get (), expr.get_node_id ()); expr.iterate_params ([&] (AST::Expr *p) mutable -> bool { @@ -82,7 +89,7 @@ public: }); } - void visit (AST::MethodCallExpr &expr) + void visit (AST::MethodCallExpr &expr) override { ResolveExpr::go (expr.get_receiver_expr ().get (), expr.get_node_id ()); expr.iterate_params ([&] (AST::Expr *p) mutable -> bool { @@ -91,7 +98,7 @@ public: }); } - void visit (AST::AssignmentExpr &expr) + void visit (AST::AssignmentExpr &expr) override { ResolveExpr::go (expr.get_left_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_right_expr ().get (), expr.get_node_id ()); @@ -100,7 +107,7 @@ public: VerifyAsignee::go (expr.get_left_expr ().get (), expr.get_node_id ()); } - void visit (AST::IdentifierExpr &expr) + void visit (AST::IdentifierExpr &expr) override { if (resolver->get_name_scope ().lookup (expr.as_string (), &resolved_node)) { @@ -124,13 +131,13 @@ public: } } - void visit (AST::ArithmeticOrLogicalExpr &expr) + void visit (AST::ArithmeticOrLogicalExpr &expr) override { ResolveExpr::go (expr.get_left_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_right_expr ().get (), expr.get_node_id ()); } - void visit (AST::CompoundAssignmentExpr &expr) + void visit (AST::CompoundAssignmentExpr &expr) override { ResolveExpr::go (expr.get_left_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_right_expr ().get (), expr.get_node_id ()); @@ -139,46 +146,46 @@ public: VerifyAsignee::go (expr.get_left_expr ().get (), expr.get_node_id ()); } - void visit (AST::ComparisonExpr &expr) + void visit (AST::ComparisonExpr &expr) override { ResolveExpr::go (expr.get_left_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_right_expr ().get (), expr.get_node_id ()); } - void visit (AST::LazyBooleanExpr &expr) + void visit (AST::LazyBooleanExpr &expr) override { ResolveExpr::go (expr.get_left_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_right_expr ().get (), expr.get_node_id ()); } - void visit (AST::NegationExpr &expr) + void visit (AST::NegationExpr &expr) override { ResolveExpr::go (expr.get_negated_expr ().get (), expr.get_node_id ()); } - void visit (AST::IfExpr &expr) + void visit (AST::IfExpr &expr) override { ResolveExpr::go (expr.get_condition_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_if_block ().get (), expr.get_node_id ()); } - void visit (AST::IfExprConseqElse &expr) + void visit (AST::IfExprConseqElse &expr) override { ResolveExpr::go (expr.get_condition_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_if_block ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_else_block ().get (), expr.get_node_id ()); } - void visit (AST::IfExprConseqIf &expr) + void visit (AST::IfExprConseqIf &expr) override { ResolveExpr::go (expr.get_condition_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_if_block ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_conseq_if_expr ().get (), expr.get_node_id ()); } - void visit (AST::BlockExpr &expr); + void visit (AST::BlockExpr &expr) override; - void visit (AST::ArrayElemsValues &elems) + void visit (AST::ArrayElemsValues &elems) override { elems.iterate ([&] (AST::Expr *elem) mutable -> bool { ResolveExpr::go (elem, elems.get_node_id ()); @@ -186,24 +193,24 @@ public: }); } - void visit (AST::ArrayExpr &expr) + void visit (AST::ArrayExpr &expr) override { expr.get_array_elems ()->accept_vis (*this); } - void visit (AST::ArrayIndexExpr &expr) + void visit (AST::ArrayIndexExpr &expr) override { ResolveExpr::go (expr.get_array_expr ().get (), expr.get_node_id ()); ResolveExpr::go (expr.get_index_expr ().get (), expr.get_node_id ()); } - void visit (AST::ArrayElemsCopied &elems) + void visit (AST::ArrayElemsCopied &elems) override { ResolveExpr::go (elems.get_num_copies ().get (), elems.get_node_id ()); ResolveExpr::go (elems.get_elem_to_copy ().get (), elems.get_node_id ()); } - void visit (AST::StructExprStructFields &struct_expr) + void visit (AST::StructExprStructFields &struct_expr) override { ResolveExpr::go (&struct_expr.get_struct_name (), struct_expr.get_node_id ()); @@ -222,17 +229,17 @@ public: }); } - void visit (AST::GroupedExpr &expr) + void visit (AST::GroupedExpr &expr) override { ResolveExpr::go (expr.get_expr_in_parens ().get (), expr.get_node_id ()); } - void visit (AST::FieldAccessExpr &expr) + void visit (AST::FieldAccessExpr &expr) override { ResolveExpr::go (expr.get_receiver_expr ().get (), expr.get_node_id ()); } - void visit (AST::LoopExpr &expr) + void visit (AST::LoopExpr &expr) override { if (expr.has_loop_label ()) { @@ -261,7 +268,7 @@ public: ResolveExpr::go (expr.get_loop_block ().get (), expr.get_node_id ()); } - void visit (AST::BreakExpr &expr) + void visit (AST::BreakExpr &expr) override { if (expr.has_label ()) { @@ -288,7 +295,7 @@ public: ResolveExpr::go (expr.get_break_expr ().get (), expr.get_node_id ()); } - void visit (AST::WhileLoopExpr &expr) + void visit (AST::WhileLoopExpr &expr) override { if (expr.has_loop_label ()) { @@ -318,7 +325,7 @@ public: ResolveExpr::go (expr.get_loop_block ().get (), expr.get_node_id ()); } - void visit (AST::ContinueExpr &expr) + void visit (AST::ContinueExpr &expr) override { if (expr.has_label ()) { @@ -342,12 +349,12 @@ public: } } - void visit (AST::BorrowExpr &expr) + void visit (AST::BorrowExpr &expr) override { ResolveExpr::go (expr.get_borrowed_expr ().get (), expr.get_node_id ()); } - void visit (AST::DereferenceExpr &expr) + void visit (AST::DereferenceExpr &expr) override { ResolveExpr::go (expr.get_dereferenced_expr ().get (), expr.get_node_id ()); } diff --git a/gcc/rust/resolve/rust-ast-resolve-implitem.h b/gcc/rust/resolve/rust-ast-resolve-implitem.h index 9cbef53..d76cbac 100644 --- a/gcc/rust/resolve/rust-ast-resolve-implitem.h +++ b/gcc/rust/resolve/rust-ast-resolve-implitem.h @@ -28,6 +28,8 @@ namespace Resolver { class ResolveToplevelImplItem : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::InherentImplItem *item, AST::Type *base) { @@ -35,7 +37,7 @@ public: item->accept_vis (resolver); }; - void visit (AST::ConstantItem &constant) + void visit (AST::ConstantItem &constant) override { std::string identifier = base->as_string () + "::" + constant.get_identifier (); @@ -50,7 +52,7 @@ public: constant.get_node_id ()}); } - void visit (AST::Function &function) + void visit (AST::Function &function) override { std::string identifier = base->as_string () + "::" + function.get_function_name (); @@ -65,7 +67,7 @@ public: function.get_node_id ()}); } - void visit (AST::Method &method) + void visit (AST::Method &method) override { std::string identifier = base->as_string () + "::" + method.get_method_name (); diff --git a/gcc/rust/resolve/rust-ast-resolve-item.h b/gcc/rust/resolve/rust-ast-resolve-item.h index 1e98232..95e335b 100644 --- a/gcc/rust/resolve/rust-ast-resolve-item.h +++ b/gcc/rust/resolve/rust-ast-resolve-item.h @@ -30,6 +30,8 @@ namespace Resolver { class ResolveItem : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::Item *item) { @@ -37,7 +39,7 @@ public: item->accept_vis (resolver); }; - void visit (AST::TupleStruct &struct_decl) + void visit (AST::TupleStruct &struct_decl) override { NodeId scope_node_id = struct_decl.get_node_id (); resolver->get_type_scope ().push (scope_node_id); @@ -60,7 +62,7 @@ public: resolver->get_type_scope ().pop (); } - void visit (AST::StructStruct &struct_decl) + void visit (AST::StructStruct &struct_decl) override { NodeId scope_node_id = struct_decl.get_node_id (); resolver->get_type_scope ().push (scope_node_id); @@ -83,7 +85,7 @@ public: resolver->get_type_scope ().pop (); } - void visit (AST::StaticItem &var) + void visit (AST::StaticItem &var) override { ResolveType::go (var.get_type ().get (), var.get_node_id ()); ResolveExpr::go (var.get_expr ().get (), var.get_node_id ()); @@ -93,7 +95,7 @@ public: resolver->mark_assignment_to_decl (var.get_node_id (), var.get_node_id ()); } - void visit (AST::ConstantItem &constant) + void visit (AST::ConstantItem &constant) override { ResolveType::go (constant.get_type ().get (), constant.get_node_id ()); ResolveExpr::go (constant.get_expr ().get (), constant.get_node_id ()); @@ -105,7 +107,7 @@ public: constant.get_node_id ()); } - void visit (AST::Function &function) + void visit (AST::Function &function) override { NodeId scope_node_id = function.get_node_id (); resolver->get_name_scope ().push (scope_node_id); @@ -148,7 +150,7 @@ public: resolver->get_label_scope ().pop (); } - void visit (AST::InherentImpl &impl_block) + void visit (AST::InherentImpl &impl_block) override { NodeId resolved_node = ResolveType::go (impl_block.get_type ().get (), impl_block.get_node_id ()); @@ -164,7 +166,7 @@ public: resolver->get_type_scope ().peek ()->clear_name ("Self", resolved_node); } - void visit (AST::Method &method) + void visit (AST::Method &method) override { if (method.has_return_type ()) ResolveType::go (method.get_return_type ().get (), method.get_node_id ()); diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.h b/gcc/rust/resolve/rust-ast-resolve-pattern.h index f7618ab..147bf72 100644 --- a/gcc/rust/resolve/rust-ast-resolve-pattern.h +++ b/gcc/rust/resolve/rust-ast-resolve-pattern.h @@ -27,6 +27,8 @@ namespace Resolver { class ResolvePattern : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::Pattern *pattern, NodeId parent) { @@ -42,7 +44,7 @@ public: ~ResolvePattern () {} - void visit (AST::IdentifierPattern &pattern) + void visit (AST::IdentifierPattern &pattern) override { if (resolver->get_name_scope ().lookup (pattern.get_ident (), &resolved_node)) @@ -60,6 +62,8 @@ private: class PatternDeclaration : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::Pattern *pattern, NodeId parent) { @@ -76,7 +80,7 @@ public: ~PatternDeclaration () {} - void visit (AST::IdentifierPattern &pattern) + void visit (AST::IdentifierPattern &pattern) override { // if we have a duplicate id this then allows for shadowing correctly // as new refs to this decl will match back here so it is ok to overwrite diff --git a/gcc/rust/resolve/rust-ast-resolve-stmt.h b/gcc/rust/resolve/rust-ast-resolve-stmt.h index 8904ce9..7ff80e4 100644 --- a/gcc/rust/resolve/rust-ast-resolve-stmt.h +++ b/gcc/rust/resolve/rust-ast-resolve-stmt.h @@ -30,6 +30,8 @@ namespace Resolver { class ResolveStmt : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::Stmt *stmt, NodeId parent) { @@ -39,17 +41,17 @@ public: ~ResolveStmt () {} - void visit (AST::ExprStmtWithBlock &stmt) + void visit (AST::ExprStmtWithBlock &stmt) override { ResolveExpr::go (stmt.get_expr ().get (), stmt.get_node_id ()); } - void visit (AST::ExprStmtWithoutBlock &stmt) + void visit (AST::ExprStmtWithoutBlock &stmt) override { ResolveExpr::go (stmt.get_expr ().get (), stmt.get_node_id ()); } - void visit (AST::LetStmt &stmt) + void visit (AST::LetStmt &stmt) override { if (stmt.has_init_expr ()) { diff --git a/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h b/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h index 3916473..e979137 100644 --- a/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h +++ b/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h @@ -29,6 +29,8 @@ namespace Resolver { class ResolveStructExprField : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::StructExprField *field, NodeId parent) { @@ -36,13 +38,13 @@ public: field->accept_vis (resolver); } - virtual ~ResolveStructExprField () {} + virtual ~ResolveStructExprField () override {} - void visit (AST::StructExprFieldIdentifierValue &field); + void visit (AST::StructExprFieldIdentifierValue &field) override; - void visit (AST::StructExprFieldIndexValue &field); + void visit (AST::StructExprFieldIndexValue &field) override; - void visit (AST::StructExprFieldIdentifier &field); + void visit (AST::StructExprFieldIdentifier &field) override; private: ResolveStructExprField (NodeId parent) : ResolverBase (parent) {} diff --git a/gcc/rust/resolve/rust-ast-resolve-toplevel.h b/gcc/rust/resolve/rust-ast-resolve-toplevel.h index 2e4e8e7..8baab13 100644 --- a/gcc/rust/resolve/rust-ast-resolve-toplevel.h +++ b/gcc/rust/resolve/rust-ast-resolve-toplevel.h @@ -29,6 +29,8 @@ namespace Resolver { class ResolveTopLevel : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static void go (AST::Item *item) { @@ -36,7 +38,7 @@ public: item->accept_vis (resolver); }; - void visit (AST::TupleStruct &struct_decl) + void visit (AST::TupleStruct &struct_decl) override { resolver->get_type_scope ().insert ( struct_decl.get_identifier (), struct_decl.get_node_id (), @@ -47,7 +49,7 @@ public: }); } - void visit (AST::StructStruct &struct_decl) + void visit (AST::StructStruct &struct_decl) override { resolver->get_type_scope ().insert ( struct_decl.get_identifier (), struct_decl.get_node_id (), @@ -58,7 +60,7 @@ public: }); } - void visit (AST::StaticItem &var) + void visit (AST::StaticItem &var) override { resolver->get_name_scope ().insert ( var.get_identifier (), var.get_node_id (), var.get_locus (), false, @@ -72,7 +74,7 @@ public: resolver->mark_decl_mutability (var.get_node_id (), var.is_mutable ()); } - void visit (AST::ConstantItem &constant) + void visit (AST::ConstantItem &constant) override { resolver->get_name_scope ().insert ( constant.get_identifier (), constant.get_node_id (), @@ -86,7 +88,7 @@ public: constant.get_node_id ()}); } - void visit (AST::Function &function) + void visit (AST::Function &function) override { resolver->get_name_scope ().insert ( function.get_function_name (), function.get_node_id (), @@ -108,7 +110,7 @@ public: } } - void visit (AST::InherentImpl &impl_block) + void visit (AST::InherentImpl &impl_block) override { for (auto &impl_item : impl_block.get_impl_items ()) ResolveToplevelImplItem::go (impl_item.get (), diff --git a/gcc/rust/resolve/rust-ast-resolve-type.h b/gcc/rust/resolve/rust-ast-resolve-type.h index 9267e3b..c829ed0 100644 --- a/gcc/rust/resolve/rust-ast-resolve-type.h +++ b/gcc/rust/resolve/rust-ast-resolve-type.h @@ -27,6 +27,8 @@ namespace Resolver { class ResolveTypePath : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static NodeId go (AST::TypePath &path, NodeId parent) { @@ -74,6 +76,8 @@ private: class ResolveType : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static NodeId go (AST::Type *type, NodeId parent) { @@ -85,7 +89,7 @@ public: return resolver.resolved_node; }; - void visit (AST::BareFunctionType &fntype) + void visit (AST::BareFunctionType &fntype) override { ok = true; for (auto ¶m : fntype.get_function_params ()) @@ -95,7 +99,7 @@ public: ResolveType::go (fntype.get_return_type ().get (), fntype.get_node_id ()); } - void visit (AST::TupleType &tuple) + void visit (AST::TupleType &tuple) override { ok = true; if (tuple.is_unit_type ()) @@ -108,7 +112,7 @@ public: ResolveType::go (elem.get (), tuple.get_node_id ()); } - void visit (AST::TypePath &path) + void visit (AST::TypePath &path) override { resolved_node = ResolveTypePath::go (path, parent); ok = resolved_node != UNKNOWN_NODEID; @@ -121,18 +125,18 @@ public: } } - void visit (AST::ArrayType &type) + void visit (AST::ArrayType &type) override { type.get_elem_type ()->accept_vis (*this); } - void visit (AST::ReferenceType &type) + void visit (AST::ReferenceType &type) override { type.get_type_referenced ()->accept_vis (*this); } // nothing to do for inferred types - void visit (AST::InferredType &type) { ok = true; } + void visit (AST::InferredType &type) override { ok = true; } private: ResolveType (NodeId parent) : ResolverBase (parent), ok (false) {} @@ -142,6 +146,8 @@ private: class ResolveGenericParam : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static NodeId go (AST::GenericParam *param, NodeId parent) { diff --git a/gcc/rust/resolve/rust-ast-verify-assignee.h b/gcc/rust/resolve/rust-ast-verify-assignee.h index 6cfe2c2..b607fbe 100644 --- a/gcc/rust/resolve/rust-ast-verify-assignee.h +++ b/gcc/rust/resolve/rust-ast-verify-assignee.h @@ -27,6 +27,8 @@ namespace Resolver { class VerifyAsignee : public ResolverBase { + using Rust::Resolver::ResolverBase::visit; + public: static bool go (AST::Expr *assignee, NodeId parent) { @@ -38,22 +40,22 @@ public: return checker.ok; } - void visit (AST::ArrayIndexExpr &expr) + void visit (AST::ArrayIndexExpr &expr) override { expr.get_array_expr ()->accept_vis (*this); } - void visit (AST::FieldAccessExpr &expr) + void visit (AST::FieldAccessExpr &expr) override { expr.get_receiver_expr ()->accept_vis (*this); } - void visit (AST::TupleIndexExpr &expr) + void visit (AST::TupleIndexExpr &expr) override { expr.get_tuple_expr ()->accept_vis (*this); } - void visit (AST::IdentifierExpr &expr) + void visit (AST::IdentifierExpr &expr) override { if (!resolver->get_name_scope ().lookup (expr.as_string (), &resolved_node)) return; diff --git a/gcc/rust/typecheck/rust-hir-method-resolve.h b/gcc/rust/typecheck/rust-hir-method-resolve.h index b85da5a..7c472c7 100644 --- a/gcc/rust/typecheck/rust-hir-method-resolve.h +++ b/gcc/rust/typecheck/rust-hir-method-resolve.h @@ -28,6 +28,8 @@ namespace Resolver { class MethodResolution : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static std::vector<HIR::Method *> Probe (TyTy::BaseType *receiver, HIR::PathExprSegment method_name) @@ -45,7 +47,7 @@ public: return probe.probed; } - void visit (HIR::Method &method) + void visit (HIR::Method &method) override { TyTy::BaseType *self_lookup = nullptr; if (!context->lookup_type ( diff --git a/gcc/rust/typecheck/rust-hir-type-check-expr.h b/gcc/rust/typecheck/rust-hir-type-check-expr.h index d9e8d8b..6a4ed83 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-expr.h +++ b/gcc/rust/typecheck/rust-hir-type-check-expr.h @@ -31,6 +31,8 @@ namespace Resolver { class TypeCheckExpr : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static TyTy::BaseType *Resolve (HIR::Expr *expr, bool inside_loop) { @@ -51,7 +53,7 @@ public: return resolver.infered; } - void visit (HIR::TupleIndexExpr &expr) + void visit (HIR::TupleIndexExpr &expr) override { auto resolved = TypeCheckExpr::Resolve (expr.get_tuple_expr ().get (), inside_loop); @@ -114,7 +116,7 @@ public: infered = field_tyty->get_field_type (); } - void visit (HIR::TupleExpr &expr) + void visit (HIR::TupleExpr &expr) override { if (expr.is_unit ()) { @@ -136,7 +138,7 @@ public: infered = new TyTy::TupleType (expr.get_mappings ().get_hirid (), fields); } - void visit (HIR::ReturnExpr &expr) + void visit (HIR::ReturnExpr &expr) override { if (!expr.has_return_expr ()) { @@ -161,7 +163,7 @@ public: fn_return_tyty->append_reference (ref); } - void visit (HIR::CallExpr &expr) + void visit (HIR::CallExpr &expr) override { TyTy::BaseType *function_tyty = TypeCheckExpr::Resolve (expr.get_fnexpr (), false); @@ -188,7 +190,7 @@ public: infered->set_ref (expr.get_mappings ().get_hirid ()); } - void visit (HIR::MethodCallExpr &expr) + void visit (HIR::MethodCallExpr &expr) override { auto receiver_tyty = TypeCheckExpr::Resolve (expr.get_receiver ().get (), false); @@ -248,7 +250,7 @@ public: resolved_method->get_mappings ().get_nodeid ()); } - void visit (HIR::AssignmentExpr &expr) + void visit (HIR::AssignmentExpr &expr) override { infered = new TyTy::UnitType (expr.get_mappings ().get_hirid ()); @@ -301,7 +303,7 @@ public: result->clone ()); } - void visit (HIR::IdentifierExpr &expr) + void visit (HIR::IdentifierExpr &expr) override { NodeId ast_node_id = expr.get_mappings ().get_nodeid (); @@ -359,7 +361,7 @@ public: infered->set_ref (expr.get_mappings ().get_hirid ()); } - void visit (HIR::LiteralExpr &expr) + void visit (HIR::LiteralExpr &expr) override { switch (expr.get_lit_type ()) { @@ -473,7 +475,7 @@ public: infered = infered->clone (); } - void visit (HIR::ArithmeticOrLogicalExpr &expr) + void visit (HIR::ArithmeticOrLogicalExpr &expr) override { auto lhs = TypeCheckExpr::Resolve (expr.get_lhs (), false); auto rhs = TypeCheckExpr::Resolve (expr.get_rhs (), false); @@ -494,7 +496,7 @@ public: infered->append_reference (rhs->get_ref ()); } - void visit (HIR::ComparisonExpr &expr) + void visit (HIR::ComparisonExpr &expr) override { auto lhs = TypeCheckExpr::Resolve (expr.get_lhs (), false); auto rhs = TypeCheckExpr::Resolve (expr.get_rhs (), false); @@ -509,7 +511,7 @@ public: infered->append_reference (rhs->get_ref ()); } - void visit (HIR::LazyBooleanExpr &expr) + void visit (HIR::LazyBooleanExpr &expr) override { auto lhs = TypeCheckExpr::Resolve (expr.get_lhs (), false); auto rhs = TypeCheckExpr::Resolve (expr.get_rhs (), false); @@ -530,7 +532,7 @@ public: infered->append_reference (rhs->get_ref ()); } - void visit (HIR::NegationExpr &expr) + void visit (HIR::NegationExpr &expr) override { auto negated_expr_ty = TypeCheckExpr::Resolve (expr.get_expr (), false); @@ -579,7 +581,7 @@ public: infered->append_reference (negated_expr_ty->get_ref ()); } - void visit (HIR::IfExpr &expr) + void visit (HIR::IfExpr &expr) override { TypeCheckExpr::Resolve (expr.get_if_condition (), false); TypeCheckExpr::Resolve (expr.get_if_block (), inside_loop); @@ -587,7 +589,7 @@ public: infered = new TyTy::UnitType (expr.get_mappings ().get_hirid ()); } - void visit (HIR::IfExprConseqElse &expr) + void visit (HIR::IfExprConseqElse &expr) override { TypeCheckExpr::Resolve (expr.get_if_condition (), false); auto if_blk_resolved @@ -598,7 +600,7 @@ public: infered = if_blk_resolved->unify (else_blk_resolved); } - void visit (HIR::IfExprConseqIf &expr) + void visit (HIR::IfExprConseqIf &expr) override { TypeCheckExpr::Resolve (expr.get_if_condition (), false); auto if_blk = TypeCheckExpr::Resolve (expr.get_if_block (), inside_loop); @@ -608,9 +610,9 @@ public: infered = if_blk->unify (else_blk); } - void visit (HIR::BlockExpr &expr); + void visit (HIR::BlockExpr &expr) override; - void visit (HIR::ArrayIndexExpr &expr) + void visit (HIR::ArrayIndexExpr &expr) override { TyTy::BaseType *size_ty; if (!context->lookup_builtin ("usize", &size_ty)) @@ -653,7 +655,7 @@ public: infered = array_type->get_element_type ()->clone (); } - void visit (HIR::ArrayExpr &expr) + void visit (HIR::ArrayExpr &expr) override { HIR::ArrayElems *elements = expr.get_internal_elements (); size_t num_elems = elements->get_num_elements (); @@ -666,7 +668,7 @@ public: TyTy::TyCtx (infered_array_elems->get_ref ())); } - void visit (HIR::ArrayElemsValues &elems) + void visit (HIR::ArrayElemsValues &elems) override { std::vector<TyTy::BaseType *> types; elems.iterate ([&] (HIR::Expr *e) mutable -> bool { @@ -684,23 +686,23 @@ public: infered_array_elems->append_reference (elem->get_ref ()); } - void visit (HIR::ArrayElemsCopied &elems) + void visit (HIR::ArrayElemsCopied &elems) override { infered_array_elems = TypeCheckExpr::Resolve (elems.get_elem_to_copy (), false); } - void visit (HIR::StructExprStructFields &struct_expr) + void visit (HIR::StructExprStructFields &struct_expr) override { infered = TypeCheckStructExpr::Resolve (&struct_expr); } - void visit (HIR::GroupedExpr &expr) + void visit (HIR::GroupedExpr &expr) override { infered = TypeCheckExpr::Resolve (expr.get_expr_in_parens ().get (), false); } - void visit (HIR::FieldAccessExpr &expr) + void visit (HIR::FieldAccessExpr &expr) override { auto struct_base = TypeCheckExpr::Resolve (expr.get_receiver_expr ().get (), false); @@ -727,7 +729,7 @@ public: infered = resolved->get_field_type (); } - void visit (HIR::PathInExpression &expr) + void visit (HIR::PathInExpression &expr) override { NodeId ast_node_id = expr.get_mappings ().get_nodeid (); @@ -801,7 +803,7 @@ public: } } - void visit (HIR::LoopExpr &expr) + void visit (HIR::LoopExpr &expr) override { context->push_new_loop_context (expr.get_mappings ().get_hirid ()); TyTy::BaseType *block_expr @@ -826,7 +828,7 @@ public: : new TyTy::UnitType (expr.get_mappings ().get_hirid ()); } - void visit (HIR::WhileLoopExpr &expr) + void visit (HIR::WhileLoopExpr &expr) override { context->push_new_while_loop_context (expr.get_mappings ().get_hirid ()); @@ -845,7 +847,7 @@ public: infered = new TyTy::UnitType (expr.get_mappings ().get_hirid ()); } - void visit (HIR::BreakExpr &expr) + void visit (HIR::BreakExpr &expr) override { if (!inside_loop) { @@ -873,7 +875,7 @@ public: infered = new TyTy::UnitType (expr.get_mappings ().get_hirid ()); } - void visit (HIR::ContinueExpr &expr) + void visit (HIR::ContinueExpr &expr) override { if (!inside_loop) { @@ -885,7 +887,7 @@ public: infered = new TyTy::UnitType (expr.get_mappings ().get_hirid ()); } - void visit (HIR::BorrowExpr &expr) + void visit (HIR::BorrowExpr &expr) override { TyTy::BaseType *resolved_base = TypeCheckExpr::Resolve (expr.get_expr ().get (), false); @@ -896,7 +898,7 @@ public: TyTy::TyCtx (resolved_base->get_ref ())); } - void visit (HIR::DereferenceExpr &expr) + void visit (HIR::DereferenceExpr &expr) override { TyTy::BaseType *resolved_base = TypeCheckExpr::Resolve (expr.get_expr ().get (), false); diff --git a/gcc/rust/typecheck/rust-hir-type-check-implitem.h b/gcc/rust/typecheck/rust-hir-type-check-implitem.h index 0bc45c3..9473eda 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-implitem.h +++ b/gcc/rust/typecheck/rust-hir-type-check-implitem.h @@ -30,6 +30,8 @@ namespace Resolver { class TypeCheckTopLevelImplItem : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static void Resolve (HIR::InherentImplItem *item, TyTy::BaseType *self) { @@ -37,7 +39,7 @@ public: item->accept_vis (resolver); } - void visit (HIR::ConstantItem &constant) + void visit (HIR::ConstantItem &constant) override { TyTy::BaseType *type = TypeCheckType::Resolve (constant.get_type ()); TyTy::BaseType *expr_type @@ -46,7 +48,7 @@ public: context->insert_type (constant.get_mappings (), type->unify (expr_type)); } - void visit (HIR::Function &function) + void visit (HIR::Function &function) override { TyTy::BaseType *ret_type = nullptr; if (!function.has_function_return_type ()) @@ -84,7 +86,7 @@ public: context->insert_type (function.get_mappings (), fnType); } - void visit (HIR::Method &method) + void visit (HIR::Method &method) override { TyTy::BaseType *ret_type = nullptr; if (!method.has_function_return_type ()) @@ -146,6 +148,8 @@ private: class TypeCheckImplItem : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static void Resolve (HIR::InherentImplItem *item, TyTy::BaseType *self) { @@ -153,7 +157,7 @@ public: item->accept_vis (resolver); } - void visit (HIR::Function &function) + void visit (HIR::Function &function) override { TyTy::BaseType *lookup; if (!context->lookup_type (function.get_mappings ().get_hirid (), &lookup)) @@ -186,7 +190,7 @@ public: context->pop_return_type (); } - void visit (HIR::Method &method) + void visit (HIR::Method &method) override { TyTy::BaseType *lookup; if (!context->lookup_type (method.get_mappings ().get_hirid (), &lookup)) diff --git a/gcc/rust/typecheck/rust-hir-type-check-item.h b/gcc/rust/typecheck/rust-hir-type-check-item.h index 6b1a8c4..cf04260 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-item.h +++ b/gcc/rust/typecheck/rust-hir-type-check-item.h @@ -31,6 +31,8 @@ namespace Resolver { class TypeCheckItem : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static void Resolve (HIR::Item *item) { diff --git a/gcc/rust/typecheck/rust-hir-type-check-stmt.h b/gcc/rust/typecheck/rust-hir-type-check-stmt.h index d443e87..7f7e625 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-stmt.h +++ b/gcc/rust/typecheck/rust-hir-type-check-stmt.h @@ -29,6 +29,8 @@ namespace Resolver { class TypeCheckStmt : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static TyTy::BaseType *Resolve (HIR::Stmt *stmt, bool inside_loop) { @@ -37,17 +39,17 @@ public: return resolver.infered; } - void visit (HIR::ExprStmtWithBlock &stmt) + void visit (HIR::ExprStmtWithBlock &stmt) override { infered = TypeCheckExpr::Resolve (stmt.get_expr (), inside_loop); } - void visit (HIR::ExprStmtWithoutBlock &stmt) + void visit (HIR::ExprStmtWithoutBlock &stmt) override { infered = TypeCheckExpr::Resolve (stmt.get_expr (), inside_loop); } - void visit (HIR::LetStmt &stmt) + void visit (HIR::LetStmt &stmt) override { infered = new TyTy::UnitType (stmt.get_mappings ().get_hirid ()); diff --git a/gcc/rust/typecheck/rust-hir-type-check-struct-field.h b/gcc/rust/typecheck/rust-hir-type-check-struct-field.h index 525381f..3a6cdc7 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-struct-field.h +++ b/gcc/rust/typecheck/rust-hir-type-check-struct-field.h @@ -29,6 +29,8 @@ namespace Resolver { class TypeCheckStructExpr : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static TyTy::BaseType *Resolve (HIR::StructExprStructFields *expr) { @@ -37,15 +39,15 @@ public: return resolver.resolved; } - void visit (HIR::StructExprStructFields &struct_expr); + void visit (HIR::StructExprStructFields &struct_expr) override; - void visit (HIR::PathInExpression &path); + void visit (HIR::PathInExpression &path) override; - void visit (HIR::StructExprFieldIdentifierValue &field); + void visit (HIR::StructExprFieldIdentifierValue &field) override; - void visit (HIR::StructExprFieldIndexValue &field); + void visit (HIR::StructExprFieldIndexValue &field) override; - void visit (HIR::StructExprFieldIdentifier &field); + void visit (HIR::StructExprFieldIdentifier &field) override; private: TypeCheckStructExpr (HIR::Expr *e) diff --git a/gcc/rust/typecheck/rust-hir-type-check-toplevel.h b/gcc/rust/typecheck/rust-hir-type-check-toplevel.h index 893424f..f0d0d35 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-toplevel.h +++ b/gcc/rust/typecheck/rust-hir-type-check-toplevel.h @@ -31,6 +31,8 @@ namespace Resolver { class TypeCheckTopLevel : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static void Resolve (HIR::Item *item) { @@ -38,7 +40,7 @@ public: item->accept_vis (resolver); } - void visit (HIR::TupleStruct &struct_decl) + void visit (HIR::TupleStruct &struct_decl) override { std::vector<TyTy::SubstitionMapping> substitions; if (struct_decl.has_generics ()) @@ -78,7 +80,7 @@ public: context->insert_type (struct_decl.get_mappings (), type); } - void visit (HIR::StructStruct &struct_decl) + void visit (HIR::StructStruct &struct_decl) override { std::vector<TyTy::SubstitionMapping> substitions; if (struct_decl.has_generics ()) @@ -115,7 +117,7 @@ public: context->insert_type (struct_decl.get_mappings (), type); } - void visit (HIR::StaticItem &var) + void visit (HIR::StaticItem &var) override { TyTy::BaseType *type = TypeCheckType::Resolve (var.get_type ()); TyTy::BaseType *expr_type = TypeCheckExpr::Resolve (var.get_expr (), false); @@ -123,7 +125,7 @@ public: context->insert_type (var.get_mappings (), type->unify (expr_type)); } - void visit (HIR::ConstantItem &constant) + void visit (HIR::ConstantItem &constant) override { TyTy::BaseType *type = TypeCheckType::Resolve (constant.get_type ()); TyTy::BaseType *expr_type @@ -132,7 +134,7 @@ public: context->insert_type (constant.get_mappings (), type->unify (expr_type)); } - void visit (HIR::Function &function) + void visit (HIR::Function &function) override { std::vector<TyTy::SubstitionMapping> substitions; if (function.has_generics ()) @@ -184,7 +186,7 @@ public: context->insert_type (function.get_mappings (), fnType); } - void visit (HIR::InherentImpl &impl_block) + void visit (HIR::InherentImpl &impl_block) override { auto self = TypeCheckType::Resolve (impl_block.get_type ().get ()); if (self == nullptr) diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.h b/gcc/rust/typecheck/rust-hir-type-check-type.h index 0d7d07b..db7fe63 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-type.h +++ b/gcc/rust/typecheck/rust-hir-type-check-type.h @@ -27,6 +27,8 @@ namespace Resolver { class ArrayCapacityConstant : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static bool fold (HIR::Expr *expr, size_t *folded_result) { @@ -38,7 +40,7 @@ public: virtual ~ArrayCapacityConstant () {} - void visit (HIR::LiteralExpr &expr) + void visit (HIR::LiteralExpr &expr) override { auto literal_value = expr.get_literal (); switch (expr.get_lit_type ()) @@ -64,6 +66,8 @@ private: class TypeCheckResolveGenericArguments : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static HIR::GenericArgs resolve (HIR::TypePathSegment *segment) { @@ -87,6 +91,8 @@ private: class TypeCheckType : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static TyTy::BaseType *Resolve (HIR::Type *type) { @@ -100,7 +106,7 @@ public: return resolver.translated; } - void visit (HIR::BareFunctionType &fntype) + void visit (HIR::BareFunctionType &fntype) override { TyTy::BaseType *return_type = fntype.has_return_type () @@ -120,7 +126,7 @@ public: TyTy::TyCtx (return_type->get_ref ())); } - void visit (HIR::TupleType &tuple) + void visit (HIR::TupleType &tuple) override { if (tuple.is_unit_type ()) { @@ -144,7 +150,7 @@ public: = new TyTy::TupleType (tuple.get_mappings ().get_hirid (), fields); } - void visit (HIR::TypePath &path) + void visit (HIR::TypePath &path) override { // lookup the Node this resolves to NodeId ref; @@ -227,7 +233,7 @@ public: path.as_string ().c_str ()); } - void visit (HIR::ArrayType &type) + void visit (HIR::ArrayType &type) override { size_t capacity; if (!ArrayCapacityConstant::fold (type.get_size_expr (), &capacity)) @@ -242,7 +248,7 @@ public: capacity, TyTy::TyCtx (base->get_ref ())); } - void visit (HIR::ReferenceType &type) + void visit (HIR::ReferenceType &type) override { TyTy::BaseType *base = TypeCheckType::Resolve (type.get_base_type ().get ()); @@ -250,7 +256,7 @@ public: TyTy::TyCtx (base->get_ref ())); } - void visit (HIR::InferredType &type) + void visit (HIR::InferredType &type) override { translated = new TyTy::InferType (type.get_mappings ().get_hirid (), TyTy::InferType::InferTypeKind::GENERAL); @@ -264,6 +270,8 @@ private: class TypeResolveGenericParam : public TypeCheckBase { + using Rust::Resolver::TypeCheckBase::visit; + public: static TyTy::ParamType *Resolve (HIR::GenericParam *param) { diff --git a/gcc/rust/typecheck/rust-tycheck-dump.h b/gcc/rust/typecheck/rust-tycheck-dump.h index c6dabe2..953770e 100644 --- a/gcc/rust/typecheck/rust-tycheck-dump.h +++ b/gcc/rust/typecheck/rust-tycheck-dump.h @@ -28,6 +28,8 @@ namespace Resolver { class TypeResolverDump : public TypeCheckBase { public: + using Rust::Resolver::TypeCheckBase::visit; + static void go (HIR::Crate &crate, std::ofstream &out) { TypeResolverDump dumper; diff --git a/gcc/rust/typecheck/rust-tyty-rules.h b/gcc/rust/typecheck/rust-tyty-rules.h index 4e48114..58018ed 100644 --- a/gcc/rust/typecheck/rust-tyty-rules.h +++ b/gcc/rust/typecheck/rust-tyty-rules.h @@ -276,6 +276,8 @@ private: class InferRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: InferRules (InferType *base) : BaseRules (base), base (base) {} @@ -511,6 +513,8 @@ private: class FnRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: FnRules (FnType *base) : BaseRules (base), base (base) {} @@ -567,6 +571,8 @@ private: class FnptrRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: FnptrRules (FnPtr *base) : BaseRules (base), base (base) {} @@ -660,6 +666,8 @@ private: class ArrayRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: ArrayRules (ArrayType *base) : BaseRules (base), base (base) {} @@ -696,6 +704,8 @@ private: class BoolRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: BoolRules (BoolType *base) : BaseRules (base), base (base) {} @@ -712,6 +722,8 @@ private: class IntRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: IntRules (IntType *base) : BaseRules (base), base (base) {} @@ -748,6 +760,8 @@ private: class UintRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: UintRules (UintType *base) : BaseRules (base), base (base) {} @@ -784,6 +798,8 @@ private: class FloatRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: FloatRules (FloatType *base) : BaseRules (base), base (base) {} @@ -819,6 +835,8 @@ private: class ADTRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: ADTRules (ADTType *base) : BaseRules (base), base (base) {} @@ -857,6 +875,8 @@ private: class TupleRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: TupleRules (TupleType *base) : BaseRules (base), base (base) {} @@ -896,6 +916,8 @@ private: class USizeRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: USizeRules (USizeType *base) : BaseRules (base), base (base) {} @@ -922,6 +944,8 @@ private: class ISizeRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: ISizeRules (ISizeType *base) : BaseRules (base), base (base) {} @@ -948,6 +972,8 @@ private: class CharRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: CharRules (CharType *base) : BaseRules (base), base (base) {} @@ -973,6 +999,8 @@ private: class ReferenceRules : public BaseRules { + using Rust::TyTy::BaseRules::visit; + public: ReferenceRules (ReferenceType *base) : BaseRules (base), base (base) {} @@ -1042,6 +1070,7 @@ private: class StrRules : public BaseRules { // FIXME we will need a enum for the StrType like ByteBuf etc.. + using Rust::TyTy::BaseRules::visit; public: StrRules (StrType *base) : BaseRules (base), base (base) {} |