aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/parse
diff options
context:
space:
mode:
author0xn4utilus <gyanendrabanjare8@gmail.com>2024-02-25 19:03:55 +0530
committerArthur Cohen <arthur.cohen@embecosm.com>2024-08-01 13:12:15 +0200
commitbbc1dfcc57f2042163e558428b855dca38e24e88 (patch)
tree02ce77210784a38abfc3ab8290488c957b83417e /gcc/rust/parse
parentc1ccc7c098dafac076862c25dff6e059f616b31a (diff)
downloadgcc-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.h9
-rw-r--r--gcc/rust/parse/rust-parse.h3
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 ();