From: Arthur Cohen <[email protected]>
gcc/rust/ChangeLog:
* hir/tree/rust-hir-visibility.h: Switch Visibility::VisType to an enum
class, adapt
variants' case.
* backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): Use the
new enum API.
* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Likewise.
* checks/errors/privacy/rust-visibility-resolver.cc
(VisibilityResolver::resolve_visibility): Likewise.
* hir/rust-ast-lower.cc (translate_visibility): Likewise.
* hir/tree/rust-hir.cc (Visibility::to_string): Likewise.
* metadata/rust-export-metadata.cc (PublicInterface::is_crate_public):
Likewise.
* util/rust-hir-map.cc (Mappings::Mappings): Likewise.
---
gcc/rust/backend/rust-compile-base.cc | 2 +-
gcc/rust/backend/rust-compile-implitem.cc | 2 +-
.../errors/privacy/rust-visibility-resolver.cc | 6 +++---
gcc/rust/hir/rust-ast-lower.cc | 6 +++---
gcc/rust/hir/tree/rust-hir-visibility.h | 18 +++++++++---------
gcc/rust/hir/tree/rust-hir.cc | 6 +++---
gcc/rust/metadata/rust-export-metadata.cc | 2 +-
gcc/rust/util/rust-hir-map.cc | 2 +-
8 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/gcc/rust/backend/rust-compile-base.cc
b/gcc/rust/backend/rust-compile-base.cc
index 655a43ac9c8..b7f2628f5d1 100644
--- a/gcc/rust/backend/rust-compile-base.cc
+++ b/gcc/rust/backend/rust-compile-base.cc
@@ -62,7 +62,7 @@ HIRCompileBase::setup_fndecl (tree fndecl, bool
is_main_entry_point,
{
// if its the main fn or pub visibility mark its as DECL_PUBLIC
// please see https://github.com/Rust-GCC/gccrs/pull/137
- bool is_pub = visibility.get_vis_type () == HIR::Visibility::VisType::PUBLIC;
+ bool is_pub = visibility.get_vis_type () == HIR::Visibility::VisType::Public;
if (is_main_entry_point || (is_pub && !is_generic_fn))
{
TREE_PUBLIC (fndecl) = 1;
diff --git a/gcc/rust/backend/rust-compile-implitem.cc
b/gcc/rust/backend/rust-compile-implitem.cc
index c94f439e1d6..9689ee7f71a 100644
--- a/gcc/rust/backend/rust-compile-implitem.cc
+++ b/gcc/rust/backend/rust-compile-implitem.cc
@@ -96,7 +96,7 @@ CompileTraitItem::visit (HIR::TraitItemFunc &func)
= nr_ctx.to_canonical_path (func.get_mappings ().get_nodeid ());
// FIXME: How do we get the proper visibility here?
- auto vis = HIR::Visibility (HIR::Visibility::VisType::PUBLIC);
+ auto vis = HIR::Visibility (HIR::Visibility::VisType::Public);
HIR::TraitFunctionDecl &function = func.get_decl ();
tree fndecl
= compile_function (false, function.get_function_name ().as_string (),
diff --git a/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
b/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
index ff1c1eaa5b9..ac050f89924 100644
--- a/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
+++ b/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
@@ -108,13 +108,13 @@ VisibilityResolver::resolve_visibility (const
HIR::Visibility &visibility,
{
switch (visibility.get_vis_type ())
{
- case HIR::Visibility::PRIVATE:
+ case HIR::Visibility::VisType::Private:
to_resolve = ModuleVisibility::create_restricted (current_module);
return true;
- case HIR::Visibility::PUBLIC:
+ case HIR::Visibility::VisType::Public:
to_resolve = ModuleVisibility::create_public ();
return true;
- case HIR::Visibility::RESTRICTED:
+ case HIR::Visibility::VisType::Restricted:
{
// FIXME: We also need to handle 2015 vs 2018 edition conflicts
auto id = UNKNOWN_DEFID;
diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc
index 4ccaf638f6a..167c5eeac42 100644
--- a/gcc/rust/hir/rust-ast-lower.cc
+++ b/gcc/rust/hir/rust-ast-lower.cc
@@ -42,14 +42,14 @@ translate_visibility (const AST::Visibility &vis)
switch (vis.get_vis_type ())
{
case AST::Visibility::PUB:
- return Visibility (Visibility::VisType::PUBLIC);
+ return Visibility (Visibility::VisType::Public);
case AST::Visibility::PRIV:
case AST::Visibility::PUB_SELF:
- return Visibility (Visibility::VisType::PRIVATE);
+ return Visibility (Visibility::VisType::Private);
case AST::Visibility::PUB_CRATE:
case AST::Visibility::PUB_SUPER:
case AST::Visibility::PUB_IN_PATH:
- return Visibility (Visibility::VisType::RESTRICTED,
+ return Visibility (Visibility::VisType::Restricted,
ASTLoweringSimplePath::translate (vis.get_path ()),
vis.get_locus ());
break;
diff --git a/gcc/rust/hir/tree/rust-hir-visibility.h
b/gcc/rust/hir/tree/rust-hir-visibility.h
index a09204da920..4cf5252840b 100644
--- a/gcc/rust/hir/tree/rust-hir-visibility.h
+++ b/gcc/rust/hir/tree/rust-hir-visibility.h
@@ -27,12 +27,12 @@ namespace HIR {
struct Visibility
{
public:
- enum VisType
+ enum class VisType
{
- PRIVATE,
- PUBLIC,
- RESTRICTED,
- ERROR,
+ Private,
+ Public,
+ Restricted,
+ Error,
};
private:
@@ -50,18 +50,18 @@ public:
{}
// Returns whether visibility is in an error state.
- bool is_error () const { return vis_type == ERROR; }
+ bool is_error () const { return vis_type == VisType::Error; }
// Does the current visibility refer to a simple `pub <item>` entirely public
- bool is_public () const { return vis_type == PUBLIC; }
+ bool is_public () const { return vis_type == VisType::Public; }
// Is the current visibility public restricted to a certain path
- bool is_restricted () const { return vis_type == RESTRICTED; }
+ bool is_restricted () const { return vis_type == VisType::Restricted; }
// Creates an error visibility.
static Visibility create_error ()
{
- return Visibility (ERROR, HIR::SimplePath::create_empty ());
+ return Visibility (VisType::Error, HIR::SimplePath::create_empty ());
}
VisType get_vis_type () const { return vis_type; }
diff --git a/gcc/rust/hir/tree/rust-hir.cc b/gcc/rust/hir/tree/rust-hir.cc
index cdea32783c5..ada10449706 100644
--- a/gcc/rust/hir/tree/rust-hir.cc
+++ b/gcc/rust/hir/tree/rust-hir.cc
@@ -164,11 +164,11 @@ Visibility::to_string () const
{
switch (vis_type)
{
- case PRIVATE:
+ case VisType::Private:
return std::string ("private");
- case PUBLIC:
+ case VisType::Public:
return std::string ("pub");
- case RESTRICTED:
+ case VisType::Restricted:
return std::string ("pub(in ") + path.get_mappings ().as_string ()
+ std::string (")");
default:
diff --git a/gcc/rust/metadata/rust-export-metadata.cc
b/gcc/rust/metadata/rust-export-metadata.cc
index b382db73e13..25f5f255ccb 100644
--- a/gcc/rust/metadata/rust-export-metadata.cc
+++ b/gcc/rust/metadata/rust-export-metadata.cc
@@ -344,7 +344,7 @@ PublicInterface::is_crate_public (const HIR::VisItem &item)
const HIR::Visibility &visibility = item.get_visibility ();
bool is_public
- = visibility.get_vis_type () == HIR::Visibility::VisType::PUBLIC;
+ = visibility.get_vis_type () == HIR::Visibility::VisType::Public;
bool has_path = !visibility.get_path ().is_error ();
// FIXME this might be pub(crate)
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index 89b95647861..2f804e48d78 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -105,7 +105,7 @@ Mappings::Mappings ()
builtinMarker
= new HIR::ImplBlock (node, {}, {}, nullptr, nullptr, HIR::WhereClause
({}),
BoundPolarity::RegularBound,
- HIR::Visibility (HIR::Visibility::VisType::PUBLIC),
+ HIR::Visibility (HIR::Visibility::VisType::Public),
{}, {}, UNDEF_LOCATION);
}
--
2.50.1