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>
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));
--- /dev/null
+macro_rules! mac {
+ () => {();} // { dg-warning "trailing semicolon" }
+}
+
+pub fn foo() {
+ mac!()
+}