diff options
author | Dave <dme2223@gmail.com> | 2022-11-09 23:17:50 -0600 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-02-21 12:36:45 +0100 |
commit | b84222899cac417ec1aa5dad8311836e4aae028f (patch) | |
tree | 2e52996d37cc202cabc05be54eddb71b6cb7d9a3 /gcc/rust/ast | |
parent | 2fc01303604110de368cc115d951efa3d3a1963d (diff) | |
download | gcc-b84222899cac417ec1aa5dad8311836e4aae028f.zip gcc-b84222899cac417ec1aa5dad8311836e4aae028f.tar.gz gcc-b84222899cac417ec1aa5dad8311836e4aae028f.tar.bz2 |
gccrs: add Location to AST::Visibility
gcc/rust/ChangeLog:
* ast/rust-item.h: Add location member.
* hir/rust-ast-lower.cc (translate_visibility): Pass location argument.
* hir/tree/rust-hir-item.h: Fix constructor to accept Location argument.
Diffstat (limited to 'gcc/rust/ast')
-rw-r--r-- | gcc/rust/ast/rust-item.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/rust/ast/rust-item.h b/gcc/rust/ast/rust-item.h index d66dd61..17d11e4 100644 --- a/gcc/rust/ast/rust-item.h +++ b/gcc/rust/ast/rust-item.h @@ -625,13 +625,15 @@ private: VisType vis_type; // Only assigned if vis_type is IN_PATH SimplePath in_path; + Location locus; // should this store location info? public: // Creates a Visibility - TODO make constructor protected or private? - Visibility (VisType vis_type, SimplePath in_path) - : vis_type (vis_type), in_path (std::move (in_path)) + Visibility (VisType vis_type, SimplePath in_path, + Location locus = Location ()) + : vis_type (vis_type), in_path (std::move (in_path)), locus (locus) {} VisType get_vis_type () const { return vis_type; } @@ -648,6 +650,8 @@ public: // Returns whether visibility is public or not. bool is_public () const { return vis_type != PRIV && !is_error (); } + Location get_locus () const { return locus; } + // Creates an error visibility. static Visibility create_error () { @@ -672,21 +676,24 @@ public: static Visibility create_crate (Location crate_tok_location) { return Visibility (PUB_CRATE, - SimplePath::from_str ("crate", crate_tok_location)); + SimplePath::from_str ("crate", crate_tok_location), + crate_tok_location); } // Creates a public visibility with self-relative paths static Visibility create_self (Location self_tok_location) { return Visibility (PUB_SELF, - SimplePath::from_str ("self", self_tok_location)); + SimplePath::from_str ("self", self_tok_location), + self_tok_location); } // Creates a public visibility with parent module-relative paths static Visibility create_super (Location super_tok_location) { return Visibility (PUB_SUPER, - SimplePath::from_str ("super", super_tok_location)); + SimplePath::from_str ("super", super_tok_location), + super_tok_location); } // Creates a private visibility @@ -698,7 +705,7 @@ public: // Creates a public visibility with a given path or whatever. static Visibility create_in_path (SimplePath in_path) { - return Visibility (PUB_IN_PATH, std::move (in_path)); + return Visibility (PUB_IN_PATH, std::move (in_path), in_path.get_locus ()); } std::string as_string () const; |