diff options
author | Philip Herron <philip.herron@embecosm.com> | 2022-01-13 21:29:06 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2022-01-13 21:29:22 +0000 |
commit | 06c2a74f557ec98896c9f71ba666bd969c4735d2 (patch) | |
tree | 0d3cf0acf66467261c08165ec9339693374bb513 /gcc/rust/hir/rust-ast-lower.cc | |
parent | f51d8fd538681cd66791ac6e93d094651cde174d (diff) | |
download | gcc-06c2a74f557ec98896c9f71ba666bd969c4735d2.zip gcc-06c2a74f557ec98896c9f71ba666bd969c4735d2.tar.gz gcc-06c2a74f557ec98896c9f71ba666bd969c4735d2.tar.bz2 |
Add HIR lowering for FunctionQualifiers
Diffstat (limited to 'gcc/rust/hir/rust-ast-lower.cc')
-rw-r--r-- | gcc/rust/hir/rust-ast-lower.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc index d8d53eb..326412b 100644 --- a/gcc/rust/hir/rust-ast-lower.cc +++ b/gcc/rust/hir/rust-ast-lower.cc @@ -593,5 +593,33 @@ struct_field_name_exists (std::vector<HIR::StructField> &fields, return false; } +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 (); + + // 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); +} + } // namespace HIR } // namespace Rust |