diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-06-13 00:25:03 -0400 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-07-06 10:58:37 +0000 |
commit | 5e735e9aaa7d9c5fdab1796ace3045c6f2f7badf (patch) | |
tree | 1945863bb8e136c87b2b0291a4fc9c8a57d3114d /gcc | |
parent | c8679a6d880cd99261b796a0818e93f2168344a8 (diff) | |
download | gcc-5e735e9aaa7d9c5fdab1796ace3045c6f2f7badf.zip gcc-5e735e9aaa7d9c5fdab1796ace3045c6f2f7badf.tar.gz gcc-5e735e9aaa7d9c5fdab1796ace3045c6f2f7badf.tar.bz2 |
Ignore semicolon following a macro expansion in expression context
gcc/rust/ChangeLog:
* expand/rust-macro-expand.cc
(transcribe_expression): Skip trailing semicolon.
gcc/testsuite/ChangeLog:
* rust/compile/macro-issue2273.rs: New test.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/expand/rust-macro-expand.cc | 9 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/macro-issue2273.rs | 7 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc index e313e1a..84e87e5 100644 --- a/gcc/rust/expand/rust-macro-expand.cc +++ b/gcc/rust/expand/rust-macro-expand.cc @@ -911,6 +911,15 @@ transcribe_expression (Parser<MacroInvocLexer> &parser) if (expr == nullptr) return AST::Fragment::create_error (); + // FIXME: make this an error for some edititons + if (parser.peek_current_token ()->get_id () == SEMICOLON) + { + rust_warning_at ( + parser.peek_current_token ()->get_locus (), 0, + "trailing semicolon in macro used in expression context"); + parser.skip_token (); + } + auto end = lexer.get_offs (); return AST::Fragment ({std::move (expr)}, lexer.get_token_slice (start, end)); diff --git a/gcc/testsuite/rust/compile/macro-issue2273.rs b/gcc/testsuite/rust/compile/macro-issue2273.rs new file mode 100644 index 0000000..ee3dd1f --- /dev/null +++ b/gcc/testsuite/rust/compile/macro-issue2273.rs @@ -0,0 +1,7 @@ +macro_rules! mac { + () => {();} // { dg-warning "trailing semicolon" } +} + +pub fn foo() { + mac!() +} |