https://gcc.gnu.org/g:af079a89f6e5efc8a97f1c0cdd9d8c9237f420a0
commit af079a89f6e5efc8a97f1c0cdd9d8c9237f420a0 Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Wed Nov 22 10:44:08 2023 +0100 Add async const function ast validation pass Add a check during AST validation pass to ensure functions are either const or async but not both. gcc/rust/ChangeLog: * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add async const check. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Diff: --- gcc/rust/checks/errors/rust-ast-validation.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/rust/checks/errors/rust-ast-validation.cc b/gcc/rust/checks/errors/rust-ast-validation.cc index 4b209908f9e5..54276e8fd599 100644 --- a/gcc/rust/checks/errors/rust-ast-validation.cc +++ b/gcc/rust/checks/errors/rust-ast-validation.cc @@ -98,6 +98,11 @@ ASTValidation::visit (AST::Function &function) std::set<Context> valid_context = {Context::INHERENT_IMPL, Context::TRAIT_IMPL}; + const auto &qualifiers = function.get_qualifiers (); + if (qualifiers.is_async () && qualifiers.is_const ()) + rust_error_at (function.get_locus (), + "functions cannot be both %<const%> and %<async%>"); + if (valid_context.find (context.back ()) == valid_context.end () && function.has_self_param ()) rust_error_at (