From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id 3525F385B508; Thu, 12 Jan 2023 07:45:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3525F385B508 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1673509515; bh=hnMqImpoO8uKYZn/+T021TIsYzpFLuvGynCIoTu8Xck=; h=From:To:Subject:Date:From; b=v18CKjnW9/dptCQV20/vPvd9Zk63PBDRzX0T5jhsB3CP29G/mPz8fOON/hBAnFst9 yJQ6kezH0Hhlfe1QFlNO3JbLmQRAaW+JOb7o4Y2RflC/vbZGdy90aLdh6tFuMtBJWK v+gfsdPLMXnB0jmUUFPpohM/JKOtOBo6wED5kco0= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] Add get_locus function for abstract class MetaItemInner. X-Act-Checkin: gcc X-Git-Author: mxlol233 X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: 59cbecb75d3fd270094c2008343bf86f0c3bf80d X-Git-Newrev: 84009909526bec9f6a07b94b4df187f57b692b9c Message-Id: <20230112074515.3525F385B508@sourceware.org> Date: Thu, 12 Jan 2023 07:45:15 +0000 (GMT) List-Id: https://gcc.gnu.org/g:84009909526bec9f6a07b94b4df187f57b692b9c commit 84009909526bec9f6a07b94b4df187f57b692b9c Author: mxlol233 Date: Wed Jan 11 23:24:07 2023 +0800 Add get_locus function for abstract class MetaItemInner. This commit adds virtual function get_locus to base class MetaItemInner, which is helpful when we need to print diagnostics on some sub-classes of MetaItemInner. Signed-off-by: Xiao Ma Diff: --- gcc/rust/ast/rust-ast.h | 2 ++ gcc/rust/ast/rust-expr.h | 8 ++++++++ gcc/rust/ast/rust-macro.h | 12 ++++++++++++ 3 files changed, 22 insertions(+) diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h index 1539e78f01b..6ec2841cd08 100644 --- a/gcc/rust/ast/rust-ast.h +++ b/gcc/rust/ast/rust-ast.h @@ -630,6 +630,8 @@ public: virtual ~MetaItemInner (); + virtual Location get_locus () const = 0; + virtual std::string as_string () const = 0; virtual void accept_vis (ASTVisitor &vis) = 0; diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h index c58fae5e564..34bc6993ab6 100644 --- a/gcc/rust/ast/rust-expr.h +++ b/gcc/rust/ast/rust-expr.h @@ -150,6 +150,8 @@ public: std::string as_string () const override { return lit_expr.as_string (); } + Location get_locus () const override { return lit_expr.get_locus (); } + void accept_vis (ASTVisitor &vis) override; bool check_cfg_predicate (const Session &session) const override; @@ -178,6 +180,12 @@ public: return path.as_string () + " = " + lit.as_string (); } + // There are two Locations in MetaItemPathLit (path and lit_expr), + // we have no idea use which of them, just simply return UNKNOWN_LOCATION + // now. + // Maybe we will figure out when we really need the location in the future. + Location get_locus () const override { return Location (UNKNOWN_LOCATION); } + void accept_vis (ASTVisitor &vis) override; bool check_cfg_predicate (const Session &session) const override; diff --git a/gcc/rust/ast/rust-macro.h b/gcc/rust/ast/rust-macro.h index 52c7efb5d1b..33a250ed84a 100644 --- a/gcc/rust/ast/rust-macro.h +++ b/gcc/rust/ast/rust-macro.h @@ -725,6 +725,8 @@ public: return path; } + Location get_locus () const override { return path.get_locus (); } + bool check_cfg_predicate (const Session &session) const override; Attribute to_attribute () const override; @@ -778,6 +780,8 @@ public: void accept_vis (ASTVisitor &vis) override; + Location get_locus () const override { return path.get_locus (); } + bool check_cfg_predicate (const Session &session) const override; Attribute to_attribute () const override; @@ -805,6 +809,8 @@ public: void accept_vis (ASTVisitor &vis) override; + Location get_locus () const override { return ident_locus; } + bool check_cfg_predicate (const Session &session) const override; Attribute to_attribute () const override; @@ -847,6 +853,8 @@ public: return std::unique_ptr (clone_meta_item_inner_impl ()); } + Location get_locus () const override { return ident_locus; } + bool check_cfg_predicate (const Session &session) const override; Attribute to_attribute () const override; @@ -885,6 +893,8 @@ public: void accept_vis (ASTVisitor &vis) override; + Location get_locus () const override { return ident_locus; } + bool check_cfg_predicate (const Session &session) const override; Attribute to_attribute () const override; @@ -919,6 +929,8 @@ public: void accept_vis (ASTVisitor &vis) override; + Location get_locus () const override { return ident_locus; } + bool check_cfg_predicate (const Session &session) const override; Attribute to_attribute () const override;