rust/tests/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs

52 lines
1.2 KiB
Rust
Raw Normal View History

// check-pass
// edition:2018
#![feature(stmt_expr_attributes)]
#![warn(semicolon_in_expressions_from_macros)]
#[allow(dead_code)]
macro_rules! foo {
($val:ident) => {
true; //~ WARN trailing semicolon in macro
//~| WARN this was previously accepted
//~| WARN trailing semicolon in macro
//~| WARN this was previously accepted
//~| WARN trailing semicolon in macro
//~| WARN this was previously accepted
}
}
#[allow(semicolon_in_expressions_from_macros)]
async fn bar() {
foo!(first);
}
fn main() {
#[allow(semicolon_in_expressions_from_macros)]
let _ = {
foo!(first)
};
#[allow(semicolon_in_expressions_from_macros)]
let _ = foo!(second);
#[allow(semicolon_in_expressions_from_macros)]
fn inner() {
let _ = foo!(third);
}
#[allow(semicolon_in_expressions_from_macros)]
async {
let _ = foo!(fourth);
};
let _ = {
foo!(warn_in_block)
};
let _ = foo!(warn_in_expr);
// This `#[allow]` does not work, since the attribute gets dropped
// when we expand the macro
let _ = #[allow(semicolon_in_expressions_from_macros)] foo!(allow_does_not_work);
}