]> git.proxmox.com Git - rustc.git/blob - src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / src / test / ui / lint / semicolon-in-expressions-from-macros / semicolon-in-expressions-from-macros.rs
1 // check-pass
2 // edition:2018
3 #![feature(stmt_expr_attributes)]
4 #![warn(semicolon_in_expressions_from_macros)]
5
6 #[allow(dead_code)]
7 macro_rules! foo {
8 ($val:ident) => {
9 true; //~ WARN trailing semicolon in macro
10 //~| WARN this was previously accepted
11 //~| WARN trailing semicolon in macro
12 //~| WARN this was previously accepted
13 //~| WARN trailing semicolon in macro
14 //~| WARN this was previously accepted
15 }
16 }
17
18 #[allow(semicolon_in_expressions_from_macros)]
19 async fn bar() {
20 foo!(first);
21 }
22
23 fn main() {
24 #[allow(semicolon_in_expressions_from_macros)]
25 let _ = {
26 foo!(first)
27 };
28
29 #[allow(semicolon_in_expressions_from_macros)]
30 let _ = foo!(second);
31
32 #[allow(semicolon_in_expressions_from_macros)]
33 fn inner() {
34 let _ = foo!(third);
35 }
36
37 #[allow(semicolon_in_expressions_from_macros)]
38 async {
39 let _ = foo!(fourth);
40 };
41
42 let _ = {
43 foo!(warn_in_block)
44 };
45
46 let _ = foo!(warn_in_expr);
47
48 // This `#[allow]` does not work, since the attribute gets dropped
49 // when we expand the macro
50 let _ = #[allow(semicolon_in_expressions_from_macros)] foo!(allow_does_not_work);
51 }