mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 20:01:22 -05:00
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.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -50,7 +50,8 @@ translate_visibility (const AST::Visibility &vis)
|
||||
case AST::Visibility::PUB_SUPER:
|
||||
case AST::Visibility::PUB_IN_PATH:
|
||||
return Visibility (Visibility::VisType::RESTRICTED,
|
||||
ASTLoweringSimplePath::translate (vis.get_path ()));
|
||||
ASTLoweringSimplePath::translate (vis.get_path ()),
|
||||
vis.get_locus ());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -571,13 +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))
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user