Skip to content

Commit c3f0aa8

Browse files
committed
Detect failure to match an ident metavariable
Fixes #4054 gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_identifier_or_keyword_token): Record error on failure. gcc/testsuite/ChangeLog: * rust/compile/macros/mbe/macro-issue4054.rs: New test. Signed-off-by: Owen Avery <[email protected]>
1 parent 85ec714 commit c3f0aa8

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

gcc/rust/parse/rust-parse-impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,7 @@ Parser<ManagedTokenSource>::parse_identifier_or_keyword_token ()
10531053
}
10541054
else
10551055
{
1056+
add_error (Error (t->get_locus (), "expected keyword or identifier"));
10561057
return nullptr;
10571058
}
10581059
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#[allow(path_statements)]
2+
3+
macro_rules! array_impl_default {
4+
{$t:ident} => {
5+
$t;
6+
array_impl_default!{}
7+
};
8+
{} => {}
9+
}
10+
11+
pub fn foo() {
12+
let x = 12;
13+
array_impl_default! {x}
14+
}

0 commit comments

Comments
 (0)