From patchwork Wed Apr 5 14:04:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 79734 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp369290vqo; Wed, 5 Apr 2023 07:58:17 -0700 (PDT) X-Google-Smtp-Source: AKy350bmGU6ewLyHh00zTb+IWCvHmvQEHAddFxB83aZacKCgZtWe8QjCsXBWEik9FGxmUHNTy3B1 X-Received: by 2002:a17:906:ccc6:b0:8b1:2c37:ae97 with SMTP id ot6-20020a170906ccc600b008b12c37ae97mr2744994ejb.43.1680706697004; Wed, 05 Apr 2023 07:58:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680706696; cv=none; d=google.com; s=arc-20160816; b=Qj7Ya8LxSH65tDpxMQutHOOJPGq8pHshuB+ekdM9dUyx3CnpNv7GQhZXWNiZQrqDcS pABuFyDx7FOQte0kNhUVGiZEioNRARxBwnRpYknSkszu7Sq/JdLfc4Fa9coShVJgts8o Z5G7pVwUDx1QpV0rNVQROKnaq5ZRgSOaOzpQQGYAp9Ql3rjaLsEX0P2EGBE/+lOK1Tjw Tcncc3WnTnS0BnLZaNxPKxBbsozXHTLPrnRFcjZvRuvy9Mf+ZBeXj7oyD+akkNzt66ih WvCuB+yc02d3jm1iAlwOS7sALGBzQJdsTiEQUI6ZMVMxKrP/6OSeIS4TQ/KDaGo5bRZk gWaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:dmarc-filter :delivered-to; bh=Frv8N//+9CHKGSSr17XaGIK5vrIich+zp+eoq5pK8vM=; b=eJEYNtlroXKUPBolhYxiwd4iSfi/ixmeq2VLcDMcYNQ3KtlSZm2/Xdx+QmNu+U8jk+ 6HenUhyWkwFAVlEIz7JWTcE3kt2z9eT9ER491Fy9pQoYXVKNA5LgR4sUxGVJge3PqSFw pvVsUIgGLkZMUix+VDdiunm7K0WL8y0PvC9GcbgPpqi0NvBGW/vMvnHPZuFFttx+gSuX 7nsDE5d5j4WoBbUw/CG1hEHG4Tj7g9eFWoM+bUf9a4BuWlEVGSvlBIb9noXKds7zQFXy YkUAxevGBZkiGnQg0Jtnyq5vWbQGOMlPnpH0y1tlYJMXkUgeMEyXp8TbCMpMNAvCldd1 onXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=W1dG7XYK; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id hd13-20020a170907968d00b00947d5dd48e3si2784236ejc.574.2023.04.05.07.58.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:58:16 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=W1dG7XYK; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4656739960F3 for ; Wed, 5 Apr 2023 14:21:47 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by sourceware.org (Postfix) with ESMTPS id 146F4385354E for ; Wed, 5 Apr 2023 14:06:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 146F4385354E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-wm1-x335.google.com with SMTP id hg25-20020a05600c539900b003f05a99a841so4128682wmb.3 for ; Wed, 05 Apr 2023 07:06:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1680703584; 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=Frv8N//+9CHKGSSr17XaGIK5vrIich+zp+eoq5pK8vM=; b=W1dG7XYK3rYGZlDLlmnRajgPzIY+CiiLXcsMLK3O93CsXxL9A7xNW1nD/Y8bTubsdB l67167hyQY2kfexYtIVWfpJloTgeBPILbd22ZAGvQNCHnDwgCmJiLpN2/MzRlhIs2XYB 6GF4Bl0fcTt6e7KwdELHaR2kJcYG1/BJPtyLGVloCGdqZaH0hLVuTBecja7gpnXMkAP1 SYLHH5BTZN5UiMOHDGiJrp5W+rFsdIXZH233iO0YUN52WvvWoD03e1URy74/lRQCn5t0 zepatFy/39/1Bm9Gmpn30pFNBPuO0M6pE1E1yK2dVm7hWSYc9oAse42TVhgxzAl+H3+V KXxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703584; 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=Frv8N//+9CHKGSSr17XaGIK5vrIich+zp+eoq5pK8vM=; b=jhVaxsH0cbWrfVZ5Ea5GKcPizC2YM5Oqt4hULKJ47Z3jteqlqeRhOwHs7ez3fcqhGA 64dg/coZHHK30vphpvVjSgD+h1bSuOXyOtzNDfZxhcIwSgi1a+fZOL+ywqtWmhMbkch9 6OJALeIKkxDOhLuchp2SGv8dsJ4kx6gM9OhXu+GMdGd5GOkCWnV8nAu6HUfr0m52N+su ngEIsOs0FuzRwWulYTkv22C8auA6h4VAgSDwhzFEF39IFZH8xVXJZhj6ghccEx9swrw7 WAyCLqwC1qm3t5kCihRSWa4JG25n9AN5JOLh0OVsZj6V3uHeLwy9wai5lf8F5+rrEqBg LzgA== X-Gm-Message-State: AAQBX9f01mtidH9cmqyghM8lve56s1QgqnUvAxF053wZQO4BXPoNkzzZ l6OeaKRTYEWlTiVFsEFrAIsu7C2qRCxeeBnXGg== X-Received: by 2002:a7b:c8d3:0:b0:3f0:3d41:bda2 with SMTP id f19-20020a7bc8d3000000b003f03d41bda2mr4636655wml.39.1680703584370; Wed, 05 Apr 2023 07:06:24 -0700 (PDT) Received: from platypus.localdomain ([62.23.166.218]) by smtp.gmail.com with ESMTPSA id ay8-20020a05600c1e0800b003edddae1068sm2330150wmb.9.2023.04.05.07.06.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:06:23 -0700 (PDT) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Owen Avery Subject: [committed 80/88] gccrs: Add AST::AltPattern class Date: Wed, 5 Apr 2023 16:04:04 +0200 Message-Id: <20230405140411.3016563-81-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140411.3016563-1-arthur.cohen@embecosm.com> References: <20230405140411.3016563-1-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-14.5 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 autolearn=ham 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.29 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+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762348705730353161?= X-GMAIL-MSGID: =?utf-8?q?1762348705730353161?= From: Owen Avery gcc/rust/ChangeLog: * ast/rust-ast-dump.cc (Dump::visit): Add AltPattern visitor. * ast/rust-ast-dump.h: (Dump::visit): Add AltPattern visitor. * ast/rust-ast-full-decls.h (class AltPattern): Add declaration. * ast/rust-ast-visitor.h: (ASTVisitor::visit): Add AltPattern visitor. * ast/rust-ast.cc (AltPattern::as_string): Add definition. (AltPattern::accept_vis): Add definition. * ast/rust-pattern.h (class AltPattern): Add declaration. * checks/errors/rust-feature-gate.h: (FeatureGate::visit) Add AltPattern visitor * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Add AltPattern visitor. * expand/rust-attribute-visitor.h: (AttrVisitor::visit): Add AltPattern visitor. * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add AltPattern visitor. * hir/rust-ast-lower-base.h: (ASTLoweringBase::visit): Add AltPattern visitor. * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add AltPattern visitor. * resolve/rust-ast-resolve-base.h: (ResolverBase::visit): Add AltPattern visitor. * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Add AltPattern visitor. * resolve/rust-early-name-resolver.h: (EarlyNameResolver::visit): Add AltPattern visitor. * util/rust-attributes.cc (AttributeChecker::visit): Add AltPattern visitor. * util/rust-attributes.h: (AttributeChecker::visit): Add AltPattern visitor. Signed-off-by: Owen Avery --- gcc/rust/ast/rust-ast-dump.cc | 4 ++ gcc/rust/ast/rust-ast-dump.h | 1 + gcc/rust/ast/rust-ast-full-decls.h | 1 + gcc/rust/ast/rust-ast-visitor.h | 1 + gcc/rust/ast/rust-ast.cc | 17 +++++ gcc/rust/ast/rust-pattern.h | 66 ++++++++++++++++++++ gcc/rust/checks/errors/rust-feature-gate.h | 1 + gcc/rust/expand/rust-attribute-visitor.cc | 14 +++++ gcc/rust/expand/rust-attribute-visitor.h | 1 + gcc/rust/hir/rust-ast-lower-base.cc | 3 + gcc/rust/hir/rust-ast-lower-base.h | 1 + gcc/rust/resolve/rust-ast-resolve-base.cc | 4 ++ gcc/rust/resolve/rust-ast-resolve-base.h | 1 + gcc/rust/resolve/rust-early-name-resolver.cc | 7 +++ gcc/rust/resolve/rust-early-name-resolver.h | 1 + gcc/rust/util/rust-attributes.cc | 4 ++ gcc/rust/util/rust-attributes.h | 1 + 17 files changed, 128 insertions(+) diff --git a/gcc/rust/ast/rust-ast-dump.cc b/gcc/rust/ast/rust-ast-dump.cc index 58eb35ad1db..10fb313c2c7 100644 --- a/gcc/rust/ast/rust-ast-dump.cc +++ b/gcc/rust/ast/rust-ast-dump.cc @@ -1678,6 +1678,10 @@ void Dump::visit (SlicePattern &) {} +void +Dump::visit (AltPattern &) +{} + // rust-stmt.h void Dump::visit (EmptyStmt &) diff --git a/gcc/rust/ast/rust-ast-dump.h b/gcc/rust/ast/rust-ast-dump.h index 56918f5fc98..dfe6db0dd96 100644 --- a/gcc/rust/ast/rust-ast-dump.h +++ b/gcc/rust/ast/rust-ast-dump.h @@ -293,6 +293,7 @@ private: void visit (TuplePattern &pattern); void visit (GroupedPattern &pattern); void visit (SlicePattern &pattern); + void visit (AltPattern &pattern); // rust-stmt.h void visit (EmptyStmt &stmt); diff --git a/gcc/rust/ast/rust-ast-full-decls.h b/gcc/rust/ast/rust-ast-full-decls.h index 58b12a1be0e..9d7b00ac5a2 100644 --- a/gcc/rust/ast/rust-ast-full-decls.h +++ b/gcc/rust/ast/rust-ast-full-decls.h @@ -249,6 +249,7 @@ class TuplePatternItemsRanged; class TuplePattern; class GroupedPattern; class SlicePattern; +class AltPattern; // rust-type.h class TraitBound; diff --git a/gcc/rust/ast/rust-ast-visitor.h b/gcc/rust/ast/rust-ast-visitor.h index aa59a115ee6..1083e834770 100644 --- a/gcc/rust/ast/rust-ast-visitor.h +++ b/gcc/rust/ast/rust-ast-visitor.h @@ -203,6 +203,7 @@ public: virtual void visit (TuplePattern &pattern) = 0; virtual void visit (GroupedPattern &pattern) = 0; virtual void visit (SlicePattern &pattern) = 0; + virtual void visit (AltPattern &pattern) = 0; // rust-stmt.h virtual void visit (EmptyStmt &stmt) = 0; diff --git a/gcc/rust/ast/rust-ast.cc b/gcc/rust/ast/rust-ast.cc index 972cba2e7bb..07983b7da06 100644 --- a/gcc/rust/ast/rust-ast.cc +++ b/gcc/rust/ast/rust-ast.cc @@ -2704,6 +2704,17 @@ SlicePattern::as_string () const return str; } +std::string +AltPattern::as_string () const +{ + std::string str ("AltPattern: "); + + for (const auto &pattern : alts) + str += "\n " + pattern->as_string (); + + return str; +} + std::string TuplePatternItemsMultiple::as_string () const { @@ -5649,6 +5660,12 @@ SlicePattern::accept_vis (ASTVisitor &vis) vis.visit (*this); } +void +AltPattern::accept_vis (ASTVisitor &vis) +{ + vis.visit (*this); +} + void EmptyStmt::accept_vis (ASTVisitor &vis) { diff --git a/gcc/rust/ast/rust-pattern.h b/gcc/rust/ast/rust-pattern.h index 0e2f56e3216..a62e9b98d93 100644 --- a/gcc/rust/ast/rust-pattern.h +++ b/gcc/rust/ast/rust-pattern.h @@ -1563,6 +1563,72 @@ protected: } }; +// AST node for alternate patterns +// joins together what are technically 'PatternNoTopAlt's +class AltPattern : public Pattern +{ + std::vector> alts; + Location locus; + NodeId node_id; + +public: + std::string as_string () const override; + + AltPattern (std::vector> alts, Location locus) + : alts (std::move (alts)), locus (locus), + node_id (Analysis::Mappings::get ()->get_next_node_id ()) + {} + + // Copy constructor with vector clone + AltPattern (AltPattern const &other) : locus (other.locus) + { + node_id = other.node_id; + alts.reserve (other.alts.size ()); + for (const auto &e : other.alts) + alts.push_back (e->clone_pattern ()); + } + + // Overloaded assignment operator to vector clone + AltPattern &operator= (AltPattern const &other) + { + locus = other.locus; + node_id = other.node_id; + + alts.reserve (other.alts.size ()); + for (const auto &e : other.alts) + alts.push_back (e->clone_pattern ()); + + return *this; + } + + // move constructors + AltPattern (AltPattern &&other) = default; + AltPattern &operator= (AltPattern &&other) = default; + + Location get_locus () const override final { return locus; } + + void accept_vis (ASTVisitor &vis) override; + + // TODO: seems kinda dodgy. Think of better way. + std::vector> &get_alts () { return alts; } + const std::vector> &get_alts () const + { + return alts; + } + + NodeId get_node_id () const { return node_id; } + + NodeId get_pattern_node_id () const override final { return node_id; } + +protected: + /* Use covariance to implement clone function as returning this object rather + * than base */ + AltPattern *clone_pattern_impl () const override + { + return new AltPattern (*this); + } +}; + // Moved definition to rust-path.h class PathPattern; diff --git a/gcc/rust/checks/errors/rust-feature-gate.h b/gcc/rust/checks/errors/rust-feature-gate.h index 05789cf4751..20af14719bb 100644 --- a/gcc/rust/checks/errors/rust-feature-gate.h +++ b/gcc/rust/checks/errors/rust-feature-gate.h @@ -169,6 +169,7 @@ public: void visit (AST::TuplePattern &pattern) override {} void visit (AST::GroupedPattern &pattern) override {} void visit (AST::SlicePattern &pattern) override {} + void visit (AST::AltPattern &pattern) override {} void visit (AST::EmptyStmt &stmt) override {} void visit (AST::LetStmt &stmt) override {} void visit (AST::ExprStmtWithoutBlock &stmt) override {} diff --git a/gcc/rust/expand/rust-attribute-visitor.cc b/gcc/rust/expand/rust-attribute-visitor.cc index 9abec9221ab..3a94699558d 100644 --- a/gcc/rust/expand/rust-attribute-visitor.cc +++ b/gcc/rust/expand/rust-attribute-visitor.cc @@ -3152,6 +3152,20 @@ AttrVisitor::visit (AST::SlicePattern &pattern) // TODO: quit stripping now? or keep going? } } +void +AttrVisitor::visit (AST::AltPattern &pattern) +{ + // can't strip individual patterns, only sub-patterns + for (auto &alt : pattern.get_alts ()) + { + alt->accept_vis (*this); + + if (alt->is_marked_for_strip ()) + rust_error_at (alt->get_locus (), + "cannot strip pattern in this position"); + // TODO: quit stripping now? or keep going? + } +} void AttrVisitor::visit (AST::EmptyStmt &) diff --git a/gcc/rust/expand/rust-attribute-visitor.h b/gcc/rust/expand/rust-attribute-visitor.h index 9b0e315fc08..2d10735436f 100644 --- a/gcc/rust/expand/rust-attribute-visitor.h +++ b/gcc/rust/expand/rust-attribute-visitor.h @@ -258,6 +258,7 @@ public: void visit (AST::TuplePattern &pattern) override; void visit (AST::GroupedPattern &pattern) override; void visit (AST::SlicePattern &pattern) override; + void visit (AST::AltPattern &pattern) override; void visit (AST::EmptyStmt &) override; void visit (AST::LetStmt &stmt) override; diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc index 33795726b2f..5d7b5d21340 100644 --- a/gcc/rust/hir/rust-ast-lower-base.cc +++ b/gcc/rust/hir/rust-ast-lower-base.cc @@ -461,6 +461,9 @@ ASTLoweringBase::visit (AST::GroupedPattern &) void ASTLoweringBase::visit (AST::SlicePattern &) {} +void +ASTLoweringBase::visit (AST::AltPattern &) +{} // rust-stmt.h void diff --git a/gcc/rust/hir/rust-ast-lower-base.h b/gcc/rust/hir/rust-ast-lower-base.h index 1af44aa239f..85343aacdab 100644 --- a/gcc/rust/hir/rust-ast-lower-base.h +++ b/gcc/rust/hir/rust-ast-lower-base.h @@ -231,6 +231,7 @@ public: virtual void visit (AST::TuplePattern &pattern); virtual void visit (AST::GroupedPattern &pattern); virtual void visit (AST::SlicePattern &pattern); + virtual void visit (AST::AltPattern &pattern); // rust-stmt.h virtual void visit (AST::EmptyStmt &stmt); diff --git a/gcc/rust/resolve/rust-ast-resolve-base.cc b/gcc/rust/resolve/rust-ast-resolve-base.cc index 0a78d26bcd4..5b3f4a0ae11 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.cc +++ b/gcc/rust/resolve/rust-ast-resolve-base.cc @@ -582,6 +582,10 @@ void ResolverBase::visit (AST::SlicePattern &) {} +void +ResolverBase::visit (AST::AltPattern &) +{} + void ResolverBase::visit (AST::EmptyStmt &) {} diff --git a/gcc/rust/resolve/rust-ast-resolve-base.h b/gcc/rust/resolve/rust-ast-resolve-base.h index 9d88f8fd5d3..aab1324c454 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.h +++ b/gcc/rust/resolve/rust-ast-resolve-base.h @@ -178,6 +178,7 @@ public: void visit (AST::TuplePattern &); void visit (AST::GroupedPattern &); void visit (AST::SlicePattern &); + void visit (AST::AltPattern &); void visit (AST::EmptyStmt &); void visit (AST::LetStmt &); diff --git a/gcc/rust/resolve/rust-early-name-resolver.cc b/gcc/rust/resolve/rust-early-name-resolver.cc index 5f11ae239bd..f5054f964c7 100644 --- a/gcc/rust/resolve/rust-early-name-resolver.cc +++ b/gcc/rust/resolve/rust-early-name-resolver.cc @@ -1052,6 +1052,13 @@ EarlyNameResolver::visit (AST::SlicePattern &pattern) item->accept_vis (*this); } +void +EarlyNameResolver::visit (AST::AltPattern &pattern) +{ + for (auto &alt : pattern.get_alts ()) + alt->accept_vis (*this); +} + void EarlyNameResolver::visit (AST::EmptyStmt &) {} diff --git a/gcc/rust/resolve/rust-early-name-resolver.h b/gcc/rust/resolve/rust-early-name-resolver.h index 21b92e9b7a4..84ee518e23b 100644 --- a/gcc/rust/resolve/rust-early-name-resolver.h +++ b/gcc/rust/resolve/rust-early-name-resolver.h @@ -249,6 +249,7 @@ private: virtual void visit (AST::TuplePattern &pattern); virtual void visit (AST::GroupedPattern &pattern); virtual void visit (AST::SlicePattern &pattern); + virtual void visit (AST::AltPattern &pattern); virtual void visit (AST::EmptyStmt &stmt); virtual void visit (AST::LetStmt &stmt); virtual void visit (AST::ExprStmtWithoutBlock &stmt); diff --git a/gcc/rust/util/rust-attributes.cc b/gcc/rust/util/rust-attributes.cc index 0458f6902b7..4f63dd09dac 100644 --- a/gcc/rust/util/rust-attributes.cc +++ b/gcc/rust/util/rust-attributes.cc @@ -767,6 +767,10 @@ void AttributeChecker::visit (AST::SlicePattern &) {} +void +AttributeChecker::visit (AST::AltPattern &) +{} + // rust-stmt.h void AttributeChecker::visit (AST::EmptyStmt &) diff --git a/gcc/rust/util/rust-attributes.h b/gcc/rust/util/rust-attributes.h index c08378cf774..805e3a8f40a 100644 --- a/gcc/rust/util/rust-attributes.h +++ b/gcc/rust/util/rust-attributes.h @@ -242,6 +242,7 @@ private: void visit (AST::TuplePattern &pattern); void visit (AST::GroupedPattern &pattern); void visit (AST::SlicePattern &pattern); + void visit (AST::AltPattern &pattern); // rust-stmt.h void visit (AST::EmptyStmt &stmt);