aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/hir/rust-ast-lower.cc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-01-13 21:29:06 +0000
committerPhilip Herron <philip.herron@embecosm.com>2022-01-13 21:29:22 +0000
commit06c2a74f557ec98896c9f71ba666bd969c4735d2 (patch)
tree0d3cf0acf66467261c08165ec9339693374bb513 /gcc/rust/hir/rust-ast-lower.cc
parentf51d8fd538681cd66791ac6e93d094651cde174d (diff)
downloadgcc-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.cc28
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