From patchwork Tue Jan 30 12:07:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 1892898 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=embecosm.com header.i=@embecosm.com header.a=rsa-sha256 header.s=google header.b=THt3UyXD; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TPPvR5gVzz23gZ for ; Tue, 30 Jan 2024 23:42:27 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C8F8F386EC15 for ; Tue, 30 Jan 2024 12:42:25 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id B1344385770D for ; Tue, 30 Jan 2024 12:11:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B1344385770D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B1344385770D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::332 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706616725; cv=none; b=sZ71YNxkmBDWZTD6tEWxXH9LcwZq2nXhmjFVChNAyx/TLNjhGD4FhCepkwK+5Mri7EqGMAyAtFCWmW7gYMh23kBSYp4pdCOUpajAP95guYTOZnfFArWu84FpAsRoFfae4IeS35W9q6zBMsFRXvj5eLIchEY+UzMwu3p+M1QXPJY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706616725; c=relaxed/simple; bh=ctd8ivjFMtrALJ3zsFFRd4Bj5Sg7cn/kM96vKfhu5jc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=xGER4WCMgnhuZ69eu8plUV0D11uayGb8124q9tyVyTdvRfJFCJwQj3jk+W1zm5i2pQvWZL8yNUOPihthu74tgp0rePSc5Sp11auDRNfTj0KsXBaWhQ0UKHMWwItTnIslswi4/gjiHDWdCAa/mLr48dgi8+b7eeZoImqn5xFeong= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-40e5afc18f5so41946525e9.3 for ; Tue, 30 Jan 2024 04:11:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1706616692; x=1707221492; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=HEJuZnnuKQuxQNKOVvXiYIxb18W3B/fbTUp/CKwGKHk=; b=THt3UyXDRqro8Yt/+FIFDkocJ3EfJ3PHMo0iH2Tw3bhhn76iDQXzmonjFvdlPbDVVn 4GNSaQO/eBxJPnZoaPvqH9Q+Dqr8X8AQ5bXyBlAra9MnbOdeFmqgY1jCU/GVd+9BvlWZ tS04+H97TRGjjST24H3HfJxZxmxhI2meysrDEU0wj07LbF4Lkn1JkfL/ZWewQGApplM8 KKlPk6SZ5V55vxzbMMm0VhNFDCmCVdzCcu0nSxLjrQcT2nby0CwNXLgLkkDd8jBQW8Aj WCiq2Ag1JyX8IvlMlVK/YiaaYGzaCJhcE486XGqwc346LzsyVJAl+iGr3RkL1Xsd3T/S GXeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706616692; x=1707221492; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=HEJuZnnuKQuxQNKOVvXiYIxb18W3B/fbTUp/CKwGKHk=; b=uAERCooX3pY6HCKbS7lkuy3HmcHGoDf7zlW/FdFMTIpi5O93BTJ5ALQE0cPU9zZzUq MN3zOCzUVAlxwipu0tEKJeF+xeVeDtlv1e06oypU14k8RIpQ78/I60sviTEM/5VKE5Rk eNpb2LqXePXUPnG8RW3cCoyIce7qcvDs2w1cOiAOyJJSOxXAy6rRDXnjQH1cs6wFZFJO ggIEjOjEGltgNKSsUowGEVxTyuYrRo06Z2oE9mNzuM0+ew058c5L9RRQXon+Zmk0ov8A amVtuPW900vbANHVVvgamtF24xWC36CdslQN/Yxx6mkXIcyqrKWTfTtuMnZQEMT0nAqK 0Fzw== X-Gm-Message-State: AOJu0YyGGi+/OsNVctd0AqPH27d7HkLuUePzRkwCk+REiiEcQneVv4FN JH/0jRHhP5bodS/8MhSDLWTosL2axHJd52mnu0ERRDf1/iimdXmFkCZKgBJUtzVSeITMFry54xw 9hA== X-Google-Smtp-Source: AGHT+IF7K47OamPaw/rzs0I2dSRRtdrjsLkAk2Pzf/m8gRtllRWspI804D5ewd1s961hOYGn6I4SFw== X-Received: by 2002:a5d:62cc:0:b0:33a:f4b4:8023 with SMTP id o12-20020a5d62cc000000b0033af4b48023mr3158076wrv.7.1706616692247; Tue, 30 Jan 2024 04:11:32 -0800 (PST) Received: from platypus.localdomain ([62.23.166.218]) by smtp.gmail.com with ESMTPSA id f9-20020a056000036900b00339307d9d31sm10569894wrf.112.2024.01.30.04.11.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 04:11:31 -0800 (PST) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Pierre-Emmanuel Patry Subject: [COMMITTED 057/101] gccrs: Make feature gate visitor inherit from default one Date: Tue, 30 Jan 2024 13:07:13 +0100 Message-ID: <20240130121026.807464-60-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.42.1 In-Reply-To: <20240130121026.807464-2-arthur.cohen@embecosm.com> References: <20240130121026.807464-2-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: arthur.cohen@embecosm.com Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Pierre-Emmanuel Patry The feature gating behavior may be shortened and kept cleaner using the default visitor. This means less maintenance on visit functions as the traversal is shared by multiple visitors. gcc/rust/ChangeLog: * checks/errors/rust-feature-gate.cc (FeatureGate::visit): Add a visit function for the crate level. (FeatureGate::check): Add call to crate visit. * checks/errors/rust-feature-gate.h (class FeatureGate): Remove now useless visit functions (traversal only). Signed-off-by: Pierre-Emmanuel Patry --- gcc/rust/checks/errors/rust-feature-gate.cc | 37 +++++---------------- gcc/rust/checks/errors/rust-feature-gate.h | 7 ++-- 2 files changed, 13 insertions(+), 31 deletions(-) diff --git a/gcc/rust/checks/errors/rust-feature-gate.cc b/gcc/rust/checks/errors/rust-feature-gate.cc index a531d0370f0..3c943022f05 100644 --- a/gcc/rust/checks/errors/rust-feature-gate.cc +++ b/gcc/rust/checks/errors/rust-feature-gate.cc @@ -18,11 +18,18 @@ #include "rust-feature-gate.h" #include "rust-abi.h" +#include "rust-ast-visitor.h" namespace Rust { void FeatureGate::check (AST::Crate &crate) +{ + visit (crate); +} + +void +FeatureGate::visit (AST::Crate &crate) { valid_features.clear (); @@ -56,12 +63,7 @@ FeatureGate::check (AST::Crate &crate) } } - auto &items = crate.items; - for (auto it = items.begin (); it != items.end (); it++) - { - auto &item = *it; - item->accept_vis (*this); - } + AST::DefaultASTVisitor::visit (crate); } void @@ -103,10 +105,7 @@ FeatureGate::visit (AST::ExternBlock &block) gate (Feature::Name::INTRINSICS, block.get_locus (), "intrinsics are subject to change"); } - for (const auto &item : block.get_extern_items ()) - { - item->accept_vis (*this); - } + AST::DefaultASTVisitor::visit (block); } void @@ -129,24 +128,6 @@ FeatureGate::visit (AST::MacroRulesDefinition &rules_def) check_rustc_attri (rules_def.get_outer_attrs ()); } -void -FeatureGate::visit (AST::InherentImpl &impl) -{ - for (const auto &item : impl.get_impl_items ()) - { - item->accept_vis (*this); - } -} - -void -FeatureGate::visit (AST::TraitImpl &impl) -{ - for (const auto &item : impl.get_impl_items ()) - { - item->accept_vis (*this); - } -} - void FeatureGate::visit (AST::Function &function) { diff --git a/gcc/rust/checks/errors/rust-feature-gate.h b/gcc/rust/checks/errors/rust-feature-gate.h index 1ebd3c9e05f..8d1a26a1361 100644 --- a/gcc/rust/checks/errors/rust-feature-gate.h +++ b/gcc/rust/checks/errors/rust-feature-gate.h @@ -25,12 +25,15 @@ namespace Rust { -class FeatureGate : public AST::ASTVisitor +class FeatureGate : public AST::DefaultASTVisitor { public: FeatureGate () {} + using AST::DefaultASTVisitor::visit; + void check (AST::Crate &crate); + void visit (AST::Crate &crate) override; void visit (AST::Token &tok) override {} void visit (AST::DelimTokenTree &delim_tok_tree) override {} @@ -127,8 +130,6 @@ public: void visit (AST::TraitItemConst &item) override {} void visit (AST::TraitItemType &item) override {} void visit (AST::Trait &trait) override {} - void visit (AST::InherentImpl &impl) override; - void visit (AST::TraitImpl &impl) override; void visit (AST::ExternalTypeItem &item) override; void visit (AST::ExternalStaticItem &item) override {} void visit (AST::ExternalFunctionItem &item) override {}