From d93a1f032db86fe602566a6868b9bc5279554e71 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Sat, 8 Apr 2023 01:37:56 -0400 Subject: [PATCH] gccrs: Unify HIR::ExprStmt derived class visiting gcc/rust/ChangeLog: * backend/rust-compile-stmt.cc (CompileStmt::visit): Unify ExprStmtWith{,out}Block visitors. * backend/rust-compile-stmt.h (CompileStmt::visit): Likewise. * backend/rust-compile-item.h (CompileItem::visit): Likewise. * hir/rust-hir-dump.cc (Dump::visit): Likewise. * hir/rust-hir-dump.h (Dump::visit): Likewise. * hir/tree/rust-hir-stmt.h (ExprStmt::accept_vis): Add. (ExprStmtWithoutBlock::accept_vis): Remove. (ExprStmtWithBlock::accept_vis): Remove. * hir/tree/rust-hir.cc (ExprStmt::accept_vis): Add. (ExprStmtWithoutBlock::accept_vis): Remove. (ExprStmtWithBlock::accept_vis): Remove. * hir/tree/rust-hir-visitor.h (HIRFullVisitor::visit): Likewise. (HIRFullVisitorBase::visit): Likewise. (HIRStmtVisitor::visit): Likewise. * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise. * checks/errors/rust-const-checker.h (ConstChecker::visit): Likewise. * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise. * checks/errors/rust-unsafe-checker.h (UnsafeChecker::visit): Likewise. * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise. * checks/errors/privacy/rust-privacy-reporter.h (PrivacyReporter::visit): Likewise. * checks/lints/rust-lint-marklive.h (MarkLive::visit): Likewise. * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise. * typecheck/rust-hir-type-check-stmt.h (TypeCheckStmt::visit): Likewise. * typecheck/rust-tycheck-dump.h (TypeResolverDump::visit): Likewise. Signed-off-by: Owen Avery --- gcc/rust/backend/rust-compile-item.h | 3 +-- gcc/rust/backend/rust-compile-stmt.cc | 8 +------- gcc/rust/backend/rust-compile-stmt.h | 3 +-- .../errors/privacy/rust-privacy-reporter.cc | 8 +------- .../errors/privacy/rust-privacy-reporter.h | 3 +-- gcc/rust/checks/errors/rust-const-checker.cc | 8 +------- gcc/rust/checks/errors/rust-const-checker.h | 3 +-- gcc/rust/checks/errors/rust-unsafe-checker.cc | 8 +------- gcc/rust/checks/errors/rust-unsafe-checker.h | 3 +-- gcc/rust/checks/lints/rust-lint-marklive.h | 7 +------ gcc/rust/hir/rust-hir-dump.cc | 5 +---- gcc/rust/hir/rust-hir-dump.h | 3 +-- gcc/rust/hir/tree/rust-hir-stmt.h | 9 +++------ gcc/rust/hir/tree/rust-hir-visitor.h | 9 +++------ gcc/rust/hir/tree/rust-hir.cc | 16 ++-------------- gcc/rust/typecheck/rust-hir-type-check-stmt.cc | 8 +------- gcc/rust/typecheck/rust-hir-type-check-stmt.h | 3 +-- gcc/rust/typecheck/rust-tycheck-dump.h | 7 +------ 18 files changed, 23 insertions(+), 91 deletions(-) diff --git a/gcc/rust/backend/rust-compile-item.h b/gcc/rust/backend/rust-compile-item.h index 93cf21be096b..87251ea1c60e 100644 --- a/gcc/rust/backend/rust-compile-item.h +++ b/gcc/rust/backend/rust-compile-item.h @@ -68,8 +68,7 @@ public: void visit (HIR::Trait &) override {} void visit (HIR::EmptyStmt &) override {} void visit (HIR::LetStmt &) override {} - void visit (HIR::ExprStmtWithoutBlock &) override {} - void visit (HIR::ExprStmtWithBlock &) override {} + void visit (HIR::ExprStmt &) override {} protected: CompileItem (Context *ctx, TyTy::BaseType *concrete, Location ref_locus) diff --git a/gcc/rust/backend/rust-compile-stmt.cc b/gcc/rust/backend/rust-compile-stmt.cc index 0f14ab2c3b68..5c1dbdbac2d2 100644 --- a/gcc/rust/backend/rust-compile-stmt.cc +++ b/gcc/rust/backend/rust-compile-stmt.cc @@ -36,13 +36,7 @@ CompileStmt::Compile (HIR::Stmt *stmt, Context *ctx) } void -CompileStmt::visit (HIR::ExprStmtWithBlock &stmt) -{ - translated = CompileExpr::Compile (stmt.get_expr (), ctx); -} - -void -CompileStmt::visit (HIR::ExprStmtWithoutBlock &stmt) +CompileStmt::visit (HIR::ExprStmt &stmt) { translated = CompileExpr::Compile (stmt.get_expr (), ctx); } diff --git a/gcc/rust/backend/rust-compile-stmt.h b/gcc/rust/backend/rust-compile-stmt.h index 98cf17d042bc..7b9e93d193db 100644 --- a/gcc/rust/backend/rust-compile-stmt.h +++ b/gcc/rust/backend/rust-compile-stmt.h @@ -29,8 +29,7 @@ class CompileStmt : private HIRCompileBase, protected HIR::HIRStmtVisitor public: static tree Compile (HIR::Stmt *stmt, Context *ctx); - void visit (HIR::ExprStmtWithBlock &stmt) override; - void visit (HIR::ExprStmtWithoutBlock &stmt) override; + void visit (HIR::ExprStmt &stmt) override; void visit (HIR::LetStmt &stmt) override; // Empty visit for unused Stmt HIR nodes. diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc index 1b75791dd600..6ec4de7c478f 100644 --- a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc +++ b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc @@ -717,13 +717,7 @@ PrivacyReporter::visit (HIR::LetStmt &stmt) } void -PrivacyReporter::visit (HIR::ExprStmtWithoutBlock &stmt) -{ - stmt.get_expr ()->accept_vis (*this); -} - -void -PrivacyReporter::visit (HIR::ExprStmtWithBlock &stmt) +PrivacyReporter::visit (HIR::ExprStmt &stmt) { stmt.get_expr ()->accept_vis (*this); } diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.h b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.h index 50fcf73efc2d..e391642eee44 100644 --- a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.h +++ b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.h @@ -151,8 +151,7 @@ types virtual void visit (HIR::ExternBlock &block); virtual void visit (HIR::EmptyStmt &stmt); virtual void visit (HIR::LetStmt &stmt); - virtual void visit (HIR::ExprStmtWithoutBlock &stmt); - virtual void visit (HIR::ExprStmtWithBlock &stmt); + virtual void visit (HIR::ExprStmt &stmt); Analysis::Mappings &mappings; Rust::Resolver::Resolver &resolver; diff --git a/gcc/rust/checks/errors/rust-const-checker.cc b/gcc/rust/checks/errors/rust-const-checker.cc index 0858545e9bc6..524374d9f3b9 100644 --- a/gcc/rust/checks/errors/rust-const-checker.cc +++ b/gcc/rust/checks/errors/rust-const-checker.cc @@ -821,13 +821,7 @@ ConstChecker::visit (LetStmt &stmt) } void -ConstChecker::visit (ExprStmtWithoutBlock &stmt) -{ - stmt.get_expr ()->accept_vis (*this); -} - -void -ConstChecker::visit (ExprStmtWithBlock &stmt) +ConstChecker::visit (ExprStmt &stmt) { stmt.get_expr ()->accept_vis (*this); } diff --git a/gcc/rust/checks/errors/rust-const-checker.h b/gcc/rust/checks/errors/rust-const-checker.h index eb1cc4ef08fd..8294f01aa93e 100644 --- a/gcc/rust/checks/errors/rust-const-checker.h +++ b/gcc/rust/checks/errors/rust-const-checker.h @@ -186,8 +186,7 @@ private: virtual void visit (AltPattern &pattern) override; virtual void visit (EmptyStmt &stmt) override; virtual void visit (LetStmt &stmt) override; - virtual void visit (ExprStmtWithoutBlock &stmt) override; - virtual void visit (ExprStmtWithBlock &stmt) override; + virtual void visit (ExprStmt &stmt) override; virtual void visit (TraitBound &bound) override; virtual void visit (ImplTraitType &type) override; virtual void visit (TraitObjectType &type) override; diff --git a/gcc/rust/checks/errors/rust-unsafe-checker.cc b/gcc/rust/checks/errors/rust-unsafe-checker.cc index d311366ad30a..8725e780dc94 100644 --- a/gcc/rust/checks/errors/rust-unsafe-checker.cc +++ b/gcc/rust/checks/errors/rust-unsafe-checker.cc @@ -888,13 +888,7 @@ UnsafeChecker::visit (LetStmt &stmt) } void -UnsafeChecker::visit (ExprStmtWithoutBlock &stmt) -{ - stmt.get_expr ()->accept_vis (*this); -} - -void -UnsafeChecker::visit (ExprStmtWithBlock &stmt) +UnsafeChecker::visit (ExprStmt &stmt) { stmt.get_expr ()->accept_vis (*this); } diff --git a/gcc/rust/checks/errors/rust-unsafe-checker.h b/gcc/rust/checks/errors/rust-unsafe-checker.h index ec0db39d942b..43995811265a 100644 --- a/gcc/rust/checks/errors/rust-unsafe-checker.h +++ b/gcc/rust/checks/errors/rust-unsafe-checker.h @@ -168,8 +168,7 @@ private: virtual void visit (AltPattern &pattern) override; virtual void visit (EmptyStmt &stmt) override; virtual void visit (LetStmt &stmt) override; - virtual void visit (ExprStmtWithoutBlock &stmt) override; - virtual void visit (ExprStmtWithBlock &stmt) override; + virtual void visit (ExprStmt &stmt) override; virtual void visit (TraitBound &bound) override; virtual void visit (ImplTraitType &type) override; virtual void visit (TraitObjectType &type) override; diff --git a/gcc/rust/checks/lints/rust-lint-marklive.h b/gcc/rust/checks/lints/rust-lint-marklive.h index 6fb4467f12dd..4d308471681f 100644 --- a/gcc/rust/checks/lints/rust-lint-marklive.h +++ b/gcc/rust/checks/lints/rust-lint-marklive.h @@ -156,12 +156,7 @@ public: expr.get_iterator_expr ()->accept_vis (*this); } - void visit (HIR::ExprStmtWithoutBlock &stmt) override - { - stmt.get_expr ()->accept_vis (*this); - } - - void visit (HIR::ExprStmtWithBlock &stmt) override + void visit (HIR::ExprStmt &stmt) override { stmt.get_expr ()->accept_vis (*this); } diff --git a/gcc/rust/hir/rust-hir-dump.cc b/gcc/rust/hir/rust-hir-dump.cc index c2833132abbf..b46b5dd3d9ad 100644 --- a/gcc/rust/hir/rust-hir-dump.cc +++ b/gcc/rust/hir/rust-hir-dump.cc @@ -649,14 +649,11 @@ Dump::visit (LetStmt &let_stmt) indentation.decrement (); } void -Dump::visit (ExprStmtWithoutBlock &expr_stmt) +Dump::visit (ExprStmt &expr_stmt) { auto expr = expr_stmt.get_expr (); expr->accept_vis (*this); } -void -Dump::visit (ExprStmtWithBlock &) -{} void Dump::visit (TraitBound &) diff --git a/gcc/rust/hir/rust-hir-dump.h b/gcc/rust/hir/rust-hir-dump.h index e8530fdcaa0b..17c7634c5983 100644 --- a/gcc/rust/hir/rust-hir-dump.h +++ b/gcc/rust/hir/rust-hir-dump.h @@ -165,8 +165,7 @@ private: virtual void visit (EmptyStmt &) override; virtual void visit (LetStmt &) override; - virtual void visit (ExprStmtWithoutBlock &) override; - virtual void visit (ExprStmtWithBlock &) override; + virtual void visit (ExprStmt &) override; virtual void visit (TraitBound &) override; virtual void visit (ImplTraitType &) override; diff --git a/gcc/rust/hir/tree/rust-hir-stmt.h b/gcc/rust/hir/tree/rust-hir-stmt.h index db45d1958e2d..07d29a5482d9 100644 --- a/gcc/rust/hir/tree/rust-hir-stmt.h +++ b/gcc/rust/hir/tree/rust-hir-stmt.h @@ -166,6 +166,9 @@ public: Location get_locus () const override final { return locus; } + void accept_vis (HIRFullVisitor &vis) override; + void accept_vis (HIRStmtVisitor &vis) override; + bool is_item () const override final { return false; } Expr *get_expr () { return expr.get (); } @@ -206,9 +209,6 @@ public: : ExprStmt (std::move (mappings), std::move (expr), locus) {} - void accept_vis (HIRFullVisitor &vis) override; - void accept_vis (HIRStmtVisitor &vis) override; - protected: /* Use covariance to implement clone function as returning this object rather * than base */ @@ -231,9 +231,6 @@ public: must_be_unit (must_be_unit) {} - void accept_vis (HIRFullVisitor &vis) override; - void accept_vis (HIRStmtVisitor &vis) override; - bool is_unit_check_needed () const override { return must_be_unit; } protected: diff --git a/gcc/rust/hir/tree/rust-hir-visitor.h b/gcc/rust/hir/tree/rust-hir-visitor.h index c35db8ec1aee..38c74f675eb0 100644 --- a/gcc/rust/hir/tree/rust-hir-visitor.h +++ b/gcc/rust/hir/tree/rust-hir-visitor.h @@ -138,8 +138,7 @@ public: virtual void visit (AltPattern &pattern) = 0; virtual void visit (EmptyStmt &stmt) = 0; virtual void visit (LetStmt &stmt) = 0; - virtual void visit (ExprStmtWithoutBlock &stmt) = 0; - virtual void visit (ExprStmtWithBlock &stmt) = 0; + virtual void visit (ExprStmt &stmt) = 0; virtual void visit (TraitBound &bound) = 0; virtual void visit (ImplTraitType &type) = 0; virtual void visit (TraitObjectType &type) = 0; @@ -287,8 +286,7 @@ public: virtual void visit (EmptyStmt &) override {} virtual void visit (LetStmt &) override {} - virtual void visit (ExprStmtWithoutBlock &) override {} - virtual void visit (ExprStmtWithBlock &) override {} + virtual void visit (ExprStmt &) override {} virtual void visit (TraitBound &) override {} virtual void visit (ImplTraitType &) override {} @@ -394,8 +392,7 @@ public: virtual void visit (ExternBlock &block) = 0; virtual void visit (EmptyStmt &stmt) = 0; virtual void visit (LetStmt &stmt) = 0; - virtual void visit (ExprStmtWithoutBlock &stmt) = 0; - virtual void visit (ExprStmtWithBlock &stmt) = 0; + virtual void visit (ExprStmt &stmt) = 0; }; class HIRExpressionVisitor diff --git a/gcc/rust/hir/tree/rust-hir.cc b/gcc/rust/hir/tree/rust-hir.cc index e78ada1d0d90..ac047067f82f 100644 --- a/gcc/rust/hir/tree/rust-hir.cc +++ b/gcc/rust/hir/tree/rust-hir.cc @@ -4426,13 +4426,7 @@ LetStmt::accept_vis (HIRFullVisitor &vis) } void -ExprStmtWithoutBlock::accept_vis (HIRFullVisitor &vis) -{ - vis.visit (*this); -} - -void -ExprStmtWithBlock::accept_vis (HIRFullVisitor &vis) +ExprStmt::accept_vis (HIRFullVisitor &vis) { vis.visit (*this); } @@ -4774,7 +4768,7 @@ QualifiedPathInType::accept_vis (HIRTypeVisitor &vis) } void -ExprStmtWithoutBlock::accept_vis (HIRStmtVisitor &vis) +ExprStmt::accept_vis (HIRStmtVisitor &vis) { vis.visit (*this); } @@ -4953,12 +4947,6 @@ QualifiedPathInExpression::accept_vis (HIRPatternVisitor &vis) vis.visit (*this); } -void -ExprStmtWithBlock::accept_vis (HIRStmtVisitor &vis) -{ - vis.visit (*this); -} - void PathInExpression::accept_vis (HIRPatternVisitor &vis) { diff --git a/gcc/rust/typecheck/rust-hir-type-check-stmt.cc b/gcc/rust/typecheck/rust-hir-type-check-stmt.cc index b99e7318d97d..141dd753ebfe 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-stmt.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-stmt.cc @@ -36,13 +36,7 @@ TypeCheckStmt::Resolve (HIR::Stmt *stmt) } void -TypeCheckStmt::visit (HIR::ExprStmtWithBlock &stmt) -{ - infered = TypeCheckExpr::Resolve (stmt.get_expr ()); -} - -void -TypeCheckStmt::visit (HIR::ExprStmtWithoutBlock &stmt) +TypeCheckStmt::visit (HIR::ExprStmt &stmt) { infered = TypeCheckExpr::Resolve (stmt.get_expr ()); } diff --git a/gcc/rust/typecheck/rust-hir-type-check-stmt.h b/gcc/rust/typecheck/rust-hir-type-check-stmt.h index a4663b685584..1c38416b6d5e 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-stmt.h +++ b/gcc/rust/typecheck/rust-hir-type-check-stmt.h @@ -29,8 +29,7 @@ class TypeCheckStmt : private TypeCheckBase, private HIR::HIRStmtVisitor public: static TyTy::BaseType *Resolve (HIR::Stmt *stmt); - void visit (HIR::ExprStmtWithBlock &stmt) override; - void visit (HIR::ExprStmtWithoutBlock &stmt) override; + void visit (HIR::ExprStmt &stmt) override; void visit (HIR::EmptyStmt &stmt) override; void visit (HIR::ExternBlock &extern_block) override; void visit (HIR::ConstantItem &constant) override; diff --git a/gcc/rust/typecheck/rust-tycheck-dump.h b/gcc/rust/typecheck/rust-tycheck-dump.h index 50b57f6e7a69..393533f622c2 100644 --- a/gcc/rust/typecheck/rust-tycheck-dump.h +++ b/gcc/rust/typecheck/rust-tycheck-dump.h @@ -136,12 +136,7 @@ public: } } - void visit (HIR::ExprStmtWithBlock &stmt) override - { - stmt.get_expr ()->accept_vis (*this); - } - - void visit (HIR::ExprStmtWithoutBlock &stmt) override + void visit (HIR::ExprStmt &stmt) override { stmt.get_expr ()->accept_vis (*this); } -- 2.47.2