public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/rust/master] add Location to AST::Visibility
@ 2022-11-18 23:33 Thomas Schwinge
0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2022-11-18 23:33 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:1531256aa661c8007c9bc6a496f5224bed55fe3a
commit 1531256aa661c8007c9bc6a496f5224bed55fe3a
Author: Dave <dme2223@gmail.com>
Date: Wed Nov 9 23:17:50 2022 -0600
add Location to AST::Visibility
Diff:
---
gcc/rust/ast/rust-item.h | 28 ++++++++++++++++------------
gcc/rust/hir/rust-ast-lower.cc | 5 +++--
gcc/rust/hir/tree/rust-hir-item.h | 9 +++++----
3 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/gcc/rust/ast/rust-item.h b/gcc/rust/ast/rust-item.h
index 20f1b93d948..e9826bd0e15 100644
--- a/gcc/rust/ast/rust-item.h
+++ b/gcc/rust/ast/rust-item.h
@@ -625,14 +625,14 @@ 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 +648,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 ()
{
@@ -671,22 +673,24 @@ public:
// Creates a public visibility with crate-relative paths
static Visibility create_crate (Location crate_tok_location)
{
- return Visibility (PUB_CRATE,
- SimplePath::from_str ("crate", crate_tok_location));
+ return Visibility(PUB_CRATE,
+ 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));
+ return Visibility(PUB_SELF, 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));
+ return Visibility(PUB_SUPER,
+ SimplePath::from_str("super", super_tok_location),
+ super_tok_location);
}
// Creates a private visibility
@@ -698,7 +702,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;
@@ -3836,8 +3840,8 @@ class ExternalItem
public:
virtual ~ExternalItem () {}
- /* TODO: spec syntax rules state that "MacroInvocationSemi" can be used as
- * ExternalItem, but text body isn't so clear. Adding MacroInvocationSemi
+ /* TODO: spec syntax rules state that "MacroInvocationSemi" can be used as
+ * ExternalItem, but text body isn't so clear. Adding MacroInvocationSemi
* support would require a lot of refactoring. */
// Returns whether item has outer attributes.
diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc
index 52b7003a04a..9ac3674faa7 100644
--- a/gcc/rust/hir/rust-ast-lower.cc
+++ b/gcc/rust/hir/rust-ast-lower.cc
@@ -49,8 +49,9 @@ translate_visibility (const AST::Visibility &vis)
case AST::Visibility::PUB_CRATE:
case AST::Visibility::PUB_SUPER:
case AST::Visibility::PUB_IN_PATH:
- return Visibility (Visibility::VisType::RESTRICTED,
- ASTLoweringSimplePath::translate (vis.get_path ()));
+ return Visibility(Visibility::VisType::RESTRICTED,
+ ASTLoweringSimplePath::translate(vis.get_path()),
+ vis.get_locus());
break;
}
diff --git a/gcc/rust/hir/tree/rust-hir-item.h b/gcc/rust/hir/tree/rust-hir-item.h
index d84e41e81ee..0a8e688d391 100644
--- a/gcc/rust/hir/tree/rust-hir-item.h
+++ b/gcc/rust/hir/tree/rust-hir-item.h
@@ -571,14 +571,15 @@ public:
private:
VisType vis_type;
HIR::SimplePath path;
+ Location locus;
// should this store location info?
public:
- Visibility (VisType vis_type,
- HIR::SimplePath path = HIR::SimplePath::create_empty ())
- : vis_type (vis_type), path (std::move (path))
- {}
+ Visibility(VisType vis_type,
+ HIR::SimplePath path = HIR::SimplePath::create_empty(),
+ Location locus = Location())
+ : vis_type(vis_type), path(std::move(path)), locus(locus) {}
// Returns whether visibility is in an error state.
bool is_error () const { return vis_type == ERROR; }
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-11-18 23:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-18 23:33 [gcc/devel/rust/master] add Location to AST::Visibility Thomas Schwinge
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).