diff options
author | 0xn4utilus <gyanendrabanjare8@gmail.com> | 2024-02-25 19:03:55 +0530 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-08-01 13:12:15 +0200 |
commit | bbc1dfcc57f2042163e558428b855dca38e24e88 (patch) | |
tree | 02ce77210784a38abfc3ab8290488c957b83417e /gcc/rust/parse | |
parent | c1ccc7c098dafac076862c25dff6e059f616b31a (diff) | |
download | gcc-bbc1dfcc57f2042163e558428b855dca38e24e88.zip gcc-bbc1dfcc57f2042163e558428b855dca38e24e88.tar.gz gcc-bbc1dfcc57f2042163e558428b855dca38e24e88.tar.bz2 |
gccrs: Unify ASTValidation::visit for ExternalFunctionItem and Function
gcc/rust/ChangeLog:
* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
Add external function validation support. Add ErrorCode::E0130.
* parse/rust-parse-impl.h (Parser::parse_function): Parse
external functions from `parse_function`.
(Parser::parse_external_item): Clang format.
(Parser::parse_pattern): Clang format.
* parse/rust-parse.h: Add default parameter
`is_external` in `parse_function`.
Signed-off-by: 0xn4utilus <gyanendrabanjare8@gmail.com>
Diffstat (limited to 'gcc/rust/parse')
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 9 | ||||
-rw-r--r-- | gcc/rust/parse/rust-parse.h | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 9d9722e..c8a87a1 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -2908,7 +2908,8 @@ Parser<ManagedTokenSource>::parse_use_tree () template <typename ManagedTokenSource> std::unique_ptr<AST::Function> Parser<ManagedTokenSource>::parse_function (AST::Visibility vis, - AST::AttrVec outer_attrs) + AST::AttrVec outer_attrs, + bool is_external) { location_t locus = lexer.peek_token ()->get_locus (); // Get qualifiers for function if they exist @@ -2992,7 +2993,7 @@ Parser<ManagedTokenSource>::parse_function (AST::Visibility vis, std::move (generic_params), std::move (function_params), std::move (return_type), std::move (where_clause), std::move (body), std::move (vis), - std::move (outer_attrs), locus)); + std::move (outer_attrs), locus, false, is_external)); } // Parses function or method qualifiers (i.e. const, unsafe, and extern). @@ -6166,6 +6167,7 @@ Parser<ManagedTokenSource>::parse_external_item () case FN_KW: return parse_external_function_item (std::move (vis), std::move (outer_attrs)); + case TYPE: return parse_external_type_item (std::move (vis), std::move (outer_attrs)); @@ -10474,8 +10476,7 @@ Parser<ManagedTokenSource>::parse_pattern () { lexer.skip_token (); alts.push_back (parse_pattern_no_alt ()); - } - while (lexer.peek_token ()->get_id () == PIPE); + } while (lexer.peek_token ()->get_id () == PIPE); /* alternates */ return std::unique_ptr<AST::Pattern> ( diff --git a/gcc/rust/parse/rust-parse.h b/gcc/rust/parse/rust-parse.h index 8c8bf96..cdddfa6 100644 --- a/gcc/rust/parse/rust-parse.h +++ b/gcc/rust/parse/rust-parse.h @@ -253,7 +253,8 @@ private: parse_use_decl (AST::Visibility vis, AST::AttrVec outer_attrs); std::unique_ptr<AST::UseTree> parse_use_tree (); std::unique_ptr<AST::Function> parse_function (AST::Visibility vis, - AST::AttrVec outer_attrs); + AST::AttrVec outer_attrs, + bool is_external = false); AST::FunctionQualifiers parse_function_qualifiers (); std::vector<std::unique_ptr<AST::GenericParam>> parse_generic_params_in_angles (); |