summaryrefslogtreecommitdiffstats
path: root/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs')
-rw-r--r--src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs b/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs
new file mode 100644
index 000000000..fff380934
--- /dev/null
+++ b/src/test/ui/lint/semicolon-in-expressions-from-macros/semicolon-in-expressions-from-macros.rs
@@ -0,0 +1,51 @@
+// 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);
+}