diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-01-21 22:24:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-21 22:24:23 +0000 |
commit | 6c9e57efa5474cfe5d0440e1022ee3c4a8400199 (patch) | |
tree | 9336a5c60138f53b3d83c4e8064ab4f5897d7c13 /gcc/rust/hir | |
parent | 8c96ccceb27e96246ff474800c3d7350445bd6e9 (diff) | |
parent | e77f051369efce4207c965ab2b69c5d9867c5846 (diff) | |
download | gcc-6c9e57efa5474cfe5d0440e1022ee3c4a8400199.zip gcc-6c9e57efa5474cfe5d0440e1022ee3c4a8400199.tar.gz gcc-6c9e57efa5474cfe5d0440e1022ee3c4a8400199.tar.bz2 |
Merge #883
883: Extract AsyncConstStatus to be a shared enum between AST and HIR r=philberty a=philberty
This allows us to reuse the same enum and fix the uninitilized warning
as it has already been setup before hand in the AST.
Fixes #875
Co-authored-by: Philip Herron <philip.herron@embecosm.com>
Diffstat (limited to 'gcc/rust/hir')
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-implitem.h | 16 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-stmt.h | 4 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-type.h | 4 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower.cc | 18 | ||||
-rw-r--r-- | gcc/rust/hir/tree/rust-hir-full-test.cc | 4 | ||||
-rw-r--r-- | gcc/rust/hir/tree/rust-hir-item.h | 14 |
6 files changed, 17 insertions, 43 deletions
diff --git a/gcc/rust/hir/rust-ast-lower-implitem.h b/gcc/rust/hir/rust-ast-lower-implitem.h index 3613df5..f68b3f0 100644 --- a/gcc/rust/hir/rust-ast-lower-implitem.h +++ b/gcc/rust/hir/rust-ast-lower-implitem.h @@ -118,8 +118,8 @@ public: // ignore for now and leave empty std::vector<std::unique_ptr<HIR::WhereClauseItem> > where_clause_items; HIR::WhereClause where_clause (std::move (where_clause_items)); - HIR::FunctionQualifiers qualifiers ( - HIR::FunctionQualifiers::AsyncConstStatus::NONE, Unsafety::Normal); + HIR::FunctionQualifiers qualifiers + = lower_qualifiers (function.get_qualifiers ()); HIR::Visibility vis = HIR::Visibility::create_public (); // need @@ -202,8 +202,8 @@ public: // ignore for now and leave empty std::vector<std::unique_ptr<HIR::WhereClauseItem> > where_clause_items; HIR::WhereClause where_clause (std::move (where_clause_items)); - HIR::FunctionQualifiers qualifiers ( - HIR::FunctionQualifiers::AsyncConstStatus::NONE, Unsafety::Normal); + HIR::FunctionQualifiers qualifiers + = lower_qualifiers (method.get_qualifiers ()); HIR::Visibility vis = HIR::Visibility::create_public (); // need @@ -314,8 +314,8 @@ public: std::vector<std::unique_ptr<HIR::WhereClauseItem> > where_clause_items; HIR::WhereClause where_clause (std::move (where_clause_items)); - HIR::FunctionQualifiers qualifiers ( - HIR::FunctionQualifiers::AsyncConstStatus::NONE, Unsafety::Normal); + HIR::FunctionQualifiers qualifiers + = lower_qualifiers (func.get_trait_function_decl ().get_qualifiers ()); std::vector<std::unique_ptr<HIR::GenericParam> > generic_params; if (ref.has_generics ()) @@ -392,8 +392,8 @@ public: std::vector<std::unique_ptr<HIR::WhereClauseItem> > where_clause_items; HIR::WhereClause where_clause (std::move (where_clause_items)); - HIR::FunctionQualifiers qualifiers ( - HIR::FunctionQualifiers::AsyncConstStatus::NONE, Unsafety::Normal); + HIR::FunctionQualifiers qualifiers + = lower_qualifiers (method.get_trait_method_decl ().get_qualifiers ()); std::vector<std::unique_ptr<HIR::GenericParam> > generic_params; if (ref.has_generics ()) diff --git a/gcc/rust/hir/rust-ast-lower-stmt.h b/gcc/rust/hir/rust-ast-lower-stmt.h index 27fdd22..5ce573e 100644 --- a/gcc/rust/hir/rust-ast-lower-stmt.h +++ b/gcc/rust/hir/rust-ast-lower-stmt.h @@ -356,8 +356,8 @@ public: // ignore for now and leave empty std::vector<std::unique_ptr<HIR::WhereClauseItem>> where_clause_items; HIR::WhereClause where_clause (std::move (where_clause_items)); - HIR::FunctionQualifiers qualifiers ( - HIR::FunctionQualifiers::AsyncConstStatus::NONE, Unsafety::Normal); + HIR::FunctionQualifiers qualifiers + = lower_qualifiers (function.get_qualifiers ()); HIR::Visibility vis = HIR::Visibility::create_public (); // need diff --git a/gcc/rust/hir/rust-ast-lower-type.h b/gcc/rust/hir/rust-ast-lower-type.h index 858984c..4042908 100644 --- a/gcc/rust/hir/rust-ast-lower-type.h +++ b/gcc/rust/hir/rust-ast-lower-type.h @@ -135,8 +135,8 @@ public: { bool is_variadic = false; std::vector<HIR::LifetimeParam> lifetime_params; - HIR::FunctionQualifiers qualifiers ( - HIR::FunctionQualifiers::AsyncConstStatus::NONE, Unsafety::Normal); + HIR::FunctionQualifiers qualifiers + = lower_qualifiers (fntype.get_function_qualifiers ()); std::vector<HIR::MaybeNamedParam> named_params; for (auto ¶m : fntype.get_function_params ()) diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc index d6f5cf2..87fc523 100644 --- a/gcc/rust/hir/rust-ast-lower.cc +++ b/gcc/rust/hir/rust-ast-lower.cc @@ -597,20 +597,6 @@ struct_field_name_exists (std::vector<HIR::StructField> &fields, HIR::FunctionQualifiers ASTLoweringBase::lower_qualifiers (const AST::FunctionQualifiers &qualifiers) { - HIR::FunctionQualifiers::AsyncConstStatus const_status; - switch (qualifiers.get_const_status ()) - { - case AST::FunctionQualifiers::AsyncConstStatus::NONE: - const_status = HIR::FunctionQualifiers::AsyncConstStatus::NONE; - break; - case AST::FunctionQualifiers::AsyncConstStatus::CONST: - const_status = HIR::FunctionQualifiers::AsyncConstStatus::CONST; - break; - case AST::FunctionQualifiers::AsyncConstStatus::ASYNC: - const_status = HIR::FunctionQualifiers::AsyncConstStatus::ASYNC; - break; - } - Unsafety unsafety = qualifiers.is_unsafe () ? Unsafety::Unsafe : Unsafety::Normal; bool has_extern = qualifiers.is_extern (); @@ -618,8 +604,8 @@ ASTLoweringBase::lower_qualifiers (const AST::FunctionQualifiers &qualifiers) // FIXME turn this into the Rust::ABI enum std::string extern_abi = qualifiers.get_extern_abi (); - return HIR::FunctionQualifiers (const_status, unsafety, has_extern, - extern_abi); + return HIR::FunctionQualifiers (qualifiers.get_const_status (), unsafety, + has_extern, extern_abi); } } // namespace HIR diff --git a/gcc/rust/hir/tree/rust-hir-full-test.cc b/gcc/rust/hir/tree/rust-hir-full-test.cc index 4391f39..5bfae46 100644 --- a/gcc/rust/hir/tree/rust-hir-full-test.cc +++ b/gcc/rust/hir/tree/rust-hir-full-test.cc @@ -2040,10 +2040,10 @@ FunctionQualifiers::as_string () const case NONE: // do nothing break; - case CONST: + case CONST_FN: str += "const "; break; - case ASYNC: + case ASYNC_FN: str += "async "; break; default: diff --git a/gcc/rust/hir/tree/rust-hir-item.h b/gcc/rust/hir/tree/rust-hir-item.h index 3afea36..47c0452 100644 --- a/gcc/rust/hir/tree/rust-hir-item.h +++ b/gcc/rust/hir/tree/rust-hir-item.h @@ -477,16 +477,6 @@ public: // Qualifiers for function, i.e. const, unsafe, extern etc. struct FunctionQualifiers { -public: - /* Whether the function is neither const nor async, const only, or async - * only. */ - enum AsyncConstStatus - { - NONE, - CONST, - ASYNC - }; - private: AsyncConstStatus const_status; Unsafety unsafety; @@ -494,8 +484,6 @@ private: std::string extern_abi; // e.g. extern "C" fn() -> i32 {} // TODO: maybe ensure that extern_abi only exists if extern exists? - // should this store location info? - public: FunctionQualifiers (AsyncConstStatus const_status, Unsafety unsafety, bool has_extern = false, @@ -514,7 +502,7 @@ public: AsyncConstStatus get_status () const { return const_status; } - bool is_const () const { return const_status == AsyncConstStatus::CONST; } + bool is_const () const { return const_status == AsyncConstStatus::CONST_FN; } }; // A function parameter |