aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarc Poulhiès <dkm@kataplop.net>2021-03-10 21:41:53 +0100
committerPhilip Herron <herron.philip@googlemail.com>2021-03-14 18:35:34 +0000
commit173bff7f12c2c19502825a11649ad54f612af04a (patch)
tree09e8eb459878a26068306952cb40110d120a38c5 /gcc
parentb8549556123da80e60922eaa928cfd284f831303 (diff)
downloadgcc-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')
-rw-r--r--gcc/rust/Make-lang.in2
-rw-r--r--gcc/rust/backend/rust-compile-block.h20
-rw-r--r--gcc/rust/backend/rust-compile-expr.h62
-rw-r--r--gcc/rust/backend/rust-compile-fnparam.h4
-rw-r--r--gcc/rust/backend/rust-compile-implitem.h8
-rw-r--r--gcc/rust/backend/rust-compile-item.h10
-rw-r--r--gcc/rust/backend/rust-compile-resolve-path.h2
-rw-r--r--gcc/rust/backend/rust-compile-stmt.h8
-rw-r--r--gcc/rust/backend/rust-compile-struct-field-expr.h8
-rw-r--r--gcc/rust/backend/rust-compile-var-decl.h6
-rw-r--r--gcc/rust/hir/rust-ast-lower-block.h26
-rw-r--r--gcc/rust/hir/rust-ast-lower-expr.h70
-rw-r--r--gcc/rust/hir/rust-ast-lower-implitem.h8
-rw-r--r--gcc/rust/hir/rust-ast-lower-item.h14
-rw-r--r--gcc/rust/hir/rust-ast-lower-pattern.h4
-rw-r--r--gcc/rust/hir/rust-ast-lower-stmt.h8
-rw-r--r--gcc/rust/hir/rust-ast-lower-struct-field-expr.h8
-rw-r--r--gcc/rust/hir/rust-ast-lower-type.h20
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-expr.h67
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-implitem.h8
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-item.h16
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-pattern.h8
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-stmt.h8
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h10
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-toplevel.h14
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-type.h18
-rw-r--r--gcc/rust/resolve/rust-ast-verify-assignee.h10
-rw-r--r--gcc/rust/typecheck/rust-hir-method-resolve.h4
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-expr.h62
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-implitem.h14
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-item.h2
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-stmt.h8
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-struct-field.h12
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-toplevel.h14
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-type.h22
-rw-r--r--gcc/rust/typecheck/rust-tycheck-dump.h2
-rw-r--r--gcc/rust/typecheck/rust-tyty-rules.h29
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 &param : 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) {}