From: Pierre-Emmanuel Patry Date: Wed, 22 Nov 2023 09:44:08 +0000 (+0100) Subject: gccrs: Add async const function ast validation pass X-Git-Tag: basepoints/gcc-15~1562 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=04b3089a47c5ccfb86b29a9c64157d5d4f755c1c;p=thirdparty%2Fgcc.git gccrs: 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 --- 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 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 % and %"); + if (valid_context.find (context.back ()) == valid_context.end () && function.has_self_param ()) rust_error_at (