diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-05-07 20:29:15 -0400 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-05-08 13:57:14 +0000 |
commit | 85ca0ba82084a19707912009d713aa58ef775621 (patch) | |
tree | 9a2566c40573173f2ed45b2d5b2ba6c2366fa7d2 | |
parent | cae5140e9b5a74e09f3dd95a5ffe664f1eefc14c (diff) | |
download | gcc-85ca0ba82084a19707912009d713aa58ef775621.zip gcc-85ca0ba82084a19707912009d713aa58ef775621.tar.gz gcc-85ca0ba82084a19707912009d713aa58ef775621.tar.bz2 |
Fix "default unsafe fn ..." parsing
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h
(Parser::parse_trait_impl_function_or_method):
Parse function/method qualifiers after "default".
gcc/testsuite/ChangeLog:
* rust/compile/parse_specialization.rs:
Add "default unsafe" coverage.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 6 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/parse_specialization.rs | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 1bb3a9a..cdcc8b8 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -5686,9 +5686,6 @@ Parser<ManagedTokenSource>::parse_trait_impl_function_or_method ( // - template? Location locus = lexer.peek_token ()->get_locus (); - // parse function or method qualifiers - AST::FunctionQualifiers qualifiers = parse_function_qualifiers (); - auto is_default = false; auto t = lexer.peek_token (); if (t->get_id () == IDENTIFIER && t->get_str () == "default") @@ -5697,6 +5694,9 @@ Parser<ManagedTokenSource>::parse_trait_impl_function_or_method ( lexer.skip_token (); } + // parse function or method qualifiers + AST::FunctionQualifiers qualifiers = parse_function_qualifiers (); + skip_token (FN_TOK); // parse function or method name diff --git a/gcc/testsuite/rust/compile/parse_specialization.rs b/gcc/testsuite/rust/compile/parse_specialization.rs index 5de1f6a..de50b5b 100644 --- a/gcc/testsuite/rust/compile/parse_specialization.rs +++ b/gcc/testsuite/rust/compile/parse_specialization.rs @@ -2,10 +2,12 @@ trait Foo { fn bar(); + unsafe fn bar_u(); } struct S; impl Foo for S { default fn bar() {} + default unsafe fn bar_u() {} } |