--- /dev/null
+#![feature(stmt_expr_attributes)]
+
+// Test that various placements of the inner attribute are parsed correctly,
+// or not.
+
+fn main() {
+ let a = #![allow(warnings)] (1, 2);
+ //~^ ERROR an inner attribute is not permitted in this context
+
+ let b = (#![allow(warnings)] 1, 2);
+
+ let c = {
+ #![allow(warnings)]
+ (#![allow(warnings)] 1, 2)
+ };
+
+ let d = {
+ #![allow(warnings)]
+ let e = (#![allow(warnings)] 1, 2);
+ e
+ };
+}
--- /dev/null
+error: an inner attribute is not permitted in this context
+ --> $DIR/stmt_expr_attrs_placement.rs:7:13
+ |
+LL | let a = #![allow(warnings)] (1, 2);
+ | ^^^^^^^^^^^^^^^^^^^
+ |
+ = note: inner attributes, like `#![no_std]`, annotate the item enclosing them, and are usually found at the beginning of source files. Outer attributes, like `#[test]`, annotate the item following them.
+
+error: aborting due to previous error
+