From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (wildebeest.demon.nl [212.238.236.112]) by sourceware.org (Postfix) with ESMTPS id 27CCB3858D34 for ; Sun, 29 Aug 2021 01:04:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 27CCB3858D34 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x0b.wildebeest.org [172.31.17.141]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id CF285300092A; Sun, 29 Aug 2021 03:04:23 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id 88E8C2E80FE3; Sun, 29 Aug 2021 03:04:23 +0200 (CEST) From: Mark Wielaard To: gcc-rust@gcc.gnu.org Cc: Mark Wielaard Subject: [PATCH 3/3] Remove GetLocusFromImplItem visitor Date: Sun, 29 Aug 2021 03:02:07 +0200 Message-Id: <20210829010206.409300-4-mark@klomp.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210829010206.409300-1-mark@klomp.org> References: <20210829010206.409300-1-mark@klomp.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-rust@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: gcc-rust mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Aug 2021 01:04:42 -0000 Simply use get_locus () on the ImplItem. Both the generics7.rs and generics8.rs testcase still pass. --- .../rust-hir-inherent-impl-overlap.h | 45 +------------------ 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/gcc/rust/typecheck/rust-hir-inherent-impl-overlap.h b/gcc/rust/typecheck/rust-hir-inherent-impl-overlap.h index 134d3141d38..9a2c7fe3c07 100644 --- a/gcc/rust/typecheck/rust-hir-inherent-impl-overlap.h +++ b/gcc/rust/typecheck/rust-hir-inherent-impl-overlap.h @@ -64,39 +64,6 @@ private: std::string &result; }; -class GetLocusFromImplItem : public TypeCheckBase -{ - using Rust::Resolver::TypeCheckBase::visit; - -public: - static bool Resolve (HIR::ImplItem *query, Location &locus) - { - GetLocusFromImplItem resolver (locus); - query->accept_vis (resolver); - return resolver.ok; - } - - void visit (HIR::ConstantItem &constant) override - { - ok = true; - locus = constant.get_locus (); - } - - void visit (HIR::Function &function) override - { - ok = true; - locus = function.get_locus (); - } - -private: - GetLocusFromImplItem (Location &locus) - : TypeCheckBase (), ok (false), locus (locus) - {} - - bool ok; - Location &locus; -}; - class OverlappingImplItemPass : public TypeCheckBase { using Rust::Resolver::TypeCheckBase::visit; @@ -185,16 +152,8 @@ public: void collision_detected (HIR::ImplItem *query, HIR::ImplItem *dup, const std::string &name) { - Location qlocus; // query - bool ok = GetLocusFromImplItem::Resolve (query, qlocus); - rust_assert (ok); - - Location dlocus; // dup - ok = GetLocusFromImplItem::Resolve (dup, dlocus); - rust_assert (ok); - - RichLocation r (qlocus); - r.add_range (dlocus); + RichLocation r (query->get_locus ()); + r.add_range (dup->get_locus ()); rust_error_at (r, "duplicate definitions with name %s", name.c_str ()); } -- 2.32.0