diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs
index 789d2c296e2..fdcb68cf421 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state.rs
@@ -366,10 +366,6 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
         self.print_either_attributes(attrs, ast::AttrStyle::Inner, false, true)
     }
 
-    fn print_inner_attributes_no_trailing_hardbreak(&mut self, attrs: &[ast::Attribute]) {
-        self.print_either_attributes(attrs, ast::AttrStyle::Inner, false, false)
-    }
-
     fn print_outer_attributes(&mut self, attrs: &[ast::Attribute]) {
         self.print_either_attributes(attrs, ast::AttrStyle::Outer, false, true)
     }
@@ -1675,32 +1671,24 @@ impl<'a> State<'a> {
         }
     }
 
-    fn print_expr_vec(&mut self, exprs: &[P<ast::Expr>], attrs: &[ast::Attribute]) {
+    fn print_expr_vec(&mut self, exprs: &[P<ast::Expr>]) {
         self.ibox(INDENT_UNIT);
         self.s.word("[");
-        self.print_inner_attributes_inline(attrs);
         self.commasep_exprs(Inconsistent, exprs);
         self.s.word("]");
         self.end();
     }
 
-    fn print_expr_anon_const(&mut self, expr: &ast::AnonConst, attrs: &[ast::Attribute]) {
+    fn print_expr_anon_const(&mut self, expr: &ast::AnonConst) {
         self.ibox(INDENT_UNIT);
         self.s.word("const");
-        self.print_inner_attributes_inline(attrs);
         self.print_expr(&expr.value);
         self.end();
     }
 
-    fn print_expr_repeat(
-        &mut self,
-        element: &ast::Expr,
-        count: &ast::AnonConst,
-        attrs: &[ast::Attribute],
-    ) {
+    fn print_expr_repeat(&mut self, element: &ast::Expr, count: &ast::AnonConst) {
         self.ibox(INDENT_UNIT);
         self.s.word("[");
-        self.print_inner_attributes_inline(attrs);
         self.print_expr(element);
         self.word_space(";");
         self.print_expr(&count.value);
@@ -1713,11 +1701,9 @@ impl<'a> State<'a> {
         path: &ast::Path,
         fields: &[ast::ExprField],
         rest: &ast::StructRest,
-        attrs: &[ast::Attribute],
     ) {
         self.print_path(path, true, 0);
         self.s.word("{");
-        self.print_inner_attributes_inline(attrs);
         self.commasep_cmnt(
             Consistent,
             fields,
@@ -1752,9 +1738,8 @@ impl<'a> State<'a> {
         self.s.word("}");
     }
 
-    fn print_expr_tup(&mut self, exprs: &[P<ast::Expr>], attrs: &[ast::Attribute]) {
+    fn print_expr_tup(&mut self, exprs: &[P<ast::Expr>]) {
         self.popen();
-        self.print_inner_attributes_inline(attrs);
         self.commasep_exprs(Inconsistent, exprs);
         if exprs.len() == 1 {
             self.s.word(",");
@@ -1865,19 +1850,19 @@ impl<'a> State<'a> {
                 self.print_expr_maybe_paren(expr, parser::PREC_PREFIX);
             }
             ast::ExprKind::Array(ref exprs) => {
-                self.print_expr_vec(&exprs[..], attrs);
+                self.print_expr_vec(exprs);
             }
             ast::ExprKind::ConstBlock(ref anon_const) => {
-                self.print_expr_anon_const(anon_const, attrs);
+                self.print_expr_anon_const(anon_const);
             }
             ast::ExprKind::Repeat(ref element, ref count) => {
-                self.print_expr_repeat(element, count, attrs);
+                self.print_expr_repeat(element, count);
             }
             ast::ExprKind::Struct(ref se) => {
-                self.print_expr_struct(&se.path, &se.fields, &se.rest, attrs);
+                self.print_expr_struct(&se.path, &se.fields, &se.rest);
             }
             ast::ExprKind::Tup(ref exprs) => {
-                self.print_expr_tup(&exprs[..], attrs);
+                self.print_expr_tup(exprs);
             }
             ast::ExprKind::Call(ref func, ref args) => {
                 self.print_expr_call(func, &args[..]);
@@ -1955,7 +1940,6 @@ impl<'a> State<'a> {
                 self.print_expr_as_cond(expr);
                 self.s.space();
                 self.bopen();
-                self.print_inner_attributes_no_trailing_hardbreak(attrs);
                 for arm in arms {
                     self.print_arm(arm);
                 }
@@ -2253,7 +2237,6 @@ impl<'a> State<'a> {
             ast::ExprKind::MacCall(ref m) => self.print_mac(m),
             ast::ExprKind::Paren(ref e) => {
                 self.popen();
-                self.print_inner_attributes_inline(attrs);
                 self.print_expr(e);
                 self.pclose();
             }
diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs
index e155b3fa773..56c97b59476 100644
--- a/compiler/rustc_parse/src/parser/expr.rs
+++ b/compiler/rustc_parse/src/parser/expr.rs
@@ -1216,10 +1216,9 @@ impl<'a> Parser<'a> {
         }
     }
 
-    fn parse_tuple_parens_expr(&mut self, mut attrs: AttrVec) -> PResult<'a, P<Expr>> {
+    fn parse_tuple_parens_expr(&mut self, attrs: AttrVec) -> PResult<'a, P<Expr>> {
         let lo = self.token.span;
         self.expect(&token::OpenDelim(token::Paren))?;
-        attrs.extend(self.parse_inner_attributes()?); // `(#![foo] a, b, ...)` is OK.
         let (es, trailing_comma) = match self.parse_seq_to_end(
             &token::CloseDelim(token::Paren),
             SeqSep::trailing_allowed(token::Comma),
@@ -1239,12 +1238,10 @@ impl<'a> Parser<'a> {
         self.maybe_recover_from_bad_qpath(expr, true)
     }
 
-    fn parse_array_or_repeat_expr(&mut self, mut attrs: AttrVec) -> PResult<'a, P<Expr>> {
+    fn parse_array_or_repeat_expr(&mut self, attrs: AttrVec) -> PResult<'a, P<Expr>> {
         let lo = self.token.span;
         self.bump(); // `[`
 
-        attrs.extend(self.parse_inner_attributes()?);
-
         let close = &token::CloseDelim(token::Bracket);
         let kind = if self.eat(close) {
             // Empty vector
@@ -1950,7 +1947,7 @@ impl<'a> Parser<'a> {
     }
 
     /// Parses a `match ... { ... }` expression (`match` token already eaten).
-    fn parse_match_expr(&mut self, mut attrs: AttrVec) -> PResult<'a, P<Expr>> {
+    fn parse_match_expr(&mut self, attrs: AttrVec) -> PResult<'a, P<Expr>> {
         let match_span = self.prev_token.span;
         let lo = self.prev_token.span;
         let scrutinee = self.parse_expr_res(Restrictions::NO_STRUCT_LITERAL, None)?;
@@ -1965,7 +1962,6 @@ impl<'a> Parser<'a> {
             }
             return Err(e);
         }
-        attrs.extend(self.parse_inner_attributes()?);
 
         let mut arms: Vec<Arm> = Vec::new();
         while self.token != token::CloseDelim(token::Brace) {
@@ -2293,15 +2289,13 @@ impl<'a> Parser<'a> {
     pub(super) fn parse_struct_expr(
         &mut self,
         pth: ast::Path,
-        mut attrs: AttrVec,
+        attrs: AttrVec,
         recover: bool,
     ) -> PResult<'a, P<Expr>> {
         let mut fields = Vec::new();
         let mut base = ast::StructRest::None;
         let mut recover_async = false;
 
-        attrs.extend(self.parse_inner_attributes()?);
-
         let mut async_block_err = |e: &mut DiagnosticBuilder<'_>, span: Span| {
             recover_async = true;
             e.span_label(span, "`async` blocks are only allowed in Rust 2018 or later");
diff --git a/src/test/pretty/ast-stmt-expr-attr.rs b/src/test/pretty/ast-stmt-expr-attr.rs
index 5b975424512..de42a8c4ed5 100644
--- a/src/test/pretty/ast-stmt-expr-attr.rs
+++ b/src/test/pretty/ast-stmt-expr-attr.rs
@@ -5,15 +5,15 @@ fn main() { }
 #[cfg(FALSE)]
 fn syntax() {
     let _ = #[attr] box 0;
-    let _ = #[attr] [#![attr] ];
-    let _ = #[attr] [#![attr] 0];
-    let _ = #[attr] [#![attr] 0; 0];
-    let _ = #[attr] [#![attr] 0, 0, 0];
+    let _ = #[attr] [];
+    let _ = #[attr] [0];
+    let _ = #[attr] [0; 0];
+    let _ = #[attr] [0, 0, 0];
     let _ = #[attr] foo();
     let _ = #[attr] x.foo();
-    let _ = #[attr] (#![attr] );
-    let _ = #[attr] (#![attr] #[attr] 0,);
-    let _ = #[attr] (#![attr] #[attr] 0, 0);
+    let _ = #[attr] ();
+    let _ = #[attr] (#[attr] 0,);
+    let _ = #[attr] (#[attr] 0, 0);
     let _ = #[attr] 0 + #[attr] 0;
     let _ = #[attr] 0 / #[attr] 0;
     let _ = #[attr] 0 & #[attr] 0;
@@ -43,10 +43,10 @@ fn syntax() {
                     #![attr]
                 };
     let _ =
-        #[attr] match true {
-                    #![attr]
-                            #[attr]
-                            _ => false,
+        #[attr] match true
+                    {
+                     #[attr]
+                     _ => false,
                 };
     let _ = #[attr] || #[attr] foo;
     let _ = #[attr] move || #[attr] foo;
@@ -119,10 +119,10 @@ fn syntax() {
     let _ = #[attr] foo![# ! [attr]];
     let _ = #[attr] foo! { };
     let _ = #[attr] foo! { # ! [attr] };
-    let _ = #[attr] Foo{#![attr] bar: baz,};
-    let _ = #[attr] Foo{#![attr] ..foo};
-    let _ = #[attr] Foo{#![attr] bar: baz, ..foo};
-    let _ = #[attr] (#![attr] 0);
+    let _ = #[attr] Foo{bar: baz,};
+    let _ = #[attr] Foo{..foo};
+    let _ = #[attr] Foo{bar: baz, ..foo};
+    let _ = #[attr] (0);
 
     {
         #[attr]
diff --git a/src/test/pretty/stmt_expr_attributes.rs b/src/test/pretty/stmt_expr_attributes.rs
index 619cce685d7..54a8438f1d0 100644
--- a/src/test/pretty/stmt_expr_attributes.rs
+++ b/src/test/pretty/stmt_expr_attributes.rs
@@ -41,16 +41,9 @@ fn _3() {
 fn _4() {
 
     #[rustc_dummy]
-    match () {
-        #![rustc_dummy]
-        _ => (),
-    }
+    match () { _ => (), }
 
-    let _ =
-        #[rustc_dummy] match () {
-                           #![rustc_dummy]
-                           () => (),
-                       };
+    let _ = #[rustc_dummy] match () { () => (), };
 }
 
 fn _5() {
@@ -71,14 +64,14 @@ fn _5() {
 fn _6() {
 
     #[rustc_dummy]
-    [#![rustc_dummy] 1, 2, 3];
+    [1, 2, 3];
 
-    let _ = #[rustc_dummy] [#![rustc_dummy] 1, 2, 3];
+    let _ = #[rustc_dummy] [1, 2, 3];
 
     #[rustc_dummy]
-    [#![rustc_dummy] 1; 4];
+    [1; 4];
 
-    let _ = #[rustc_dummy] [#![rustc_dummy] 1; 4];
+    let _ = #[rustc_dummy] [1; 4];
 }
 
 struct Foo {
@@ -90,24 +83,24 @@ struct Bar(());
 fn _7() {
 
     #[rustc_dummy]
-    Foo{#![rustc_dummy] data: (),};
+    Foo{data: (),};
 
-    let _ = #[rustc_dummy] Foo{#![rustc_dummy] data: (),};
+    let _ = #[rustc_dummy] Foo{data: (),};
 }
 
 fn _8() {
 
     #[rustc_dummy]
-    (#![rustc_dummy] );
+    ();
 
     #[rustc_dummy]
-    (#![rustc_dummy] 0);
+    (0);
 
     #[rustc_dummy]
-    (#![rustc_dummy] 0,);
+    (0,);
 
     #[rustc_dummy]
-    (#![rustc_dummy] 0, 1);
+    (0, 1);
 }
 
 fn _9() {
@@ -138,15 +131,15 @@ fn _10() {
 
 fn _11() {
     let _ = #[rustc_dummy] box 0;
-    let _: [(); 0] = #[rustc_dummy] [#![rustc_dummy] ];
-    let _ = #[rustc_dummy] [#![rustc_dummy] 0, 0];
-    let _ = #[rustc_dummy] [#![rustc_dummy] 0; 0];
+    let _: [(); 0] = #[rustc_dummy] [];
+    let _ = #[rustc_dummy] [0, 0];
+    let _ = #[rustc_dummy] [0; 0];
     let _ = #[rustc_dummy] foo();
     let _ = #[rustc_dummy] 1i32.clone();
-    let _ = #[rustc_dummy] (#![rustc_dummy] );
-    let _ = #[rustc_dummy] (#![rustc_dummy] 0);
-    let _ = #[rustc_dummy] (#![rustc_dummy] 0,);
-    let _ = #[rustc_dummy] (#![rustc_dummy] 0, 0);
+    let _ = #[rustc_dummy] ();
+    let _ = #[rustc_dummy] (0);
+    let _ = #[rustc_dummy] (0,);
+    let _ = #[rustc_dummy] (0, 0);
     let _ = #[rustc_dummy] 0 + #[rustc_dummy] 0;
     let _ = #[rustc_dummy] !0;
     let _ = #[rustc_dummy] -0i32;
@@ -171,11 +164,7 @@ fn _11() {
         #[rustc_dummy] loop  {
                            #![rustc_dummy]
                        };
-    let _ =
-        #[rustc_dummy] match false {
-                           #![rustc_dummy]
-                           _ => (),
-                       };
+    let _ = #[rustc_dummy] match false { _ => (), };
     let _ = #[rustc_dummy] || #[rustc_dummy] ();
     let _ = #[rustc_dummy] move || #[rustc_dummy] ();
     let _ =
@@ -237,10 +226,10 @@ fn _11() {
     let _ = #[rustc_dummy] expr_mac!();
     let _ = #[rustc_dummy] expr_mac![];
     let _ = #[rustc_dummy] expr_mac! { };
-    let _ = #[rustc_dummy] Foo{#![rustc_dummy] data: (),};
-    let _ = #[rustc_dummy] Foo{#![rustc_dummy] ..s};
-    let _ = #[rustc_dummy] Foo{#![rustc_dummy] data: (), ..s};
-    let _ = #[rustc_dummy] (#![rustc_dummy] 0);
+    let _ = #[rustc_dummy] Foo{data: (),};
+    let _ = #[rustc_dummy] Foo{..s};
+    let _ = #[rustc_dummy] Foo{data: (), ..s};
+    let _ = #[rustc_dummy] (0);
 }
 
 fn _12() {
diff --git a/src/test/ui/lint/expr_attr_paren_order.rs b/src/test/ui/lint/expr_attr_paren_order.rs
index 65f2b67d22b..e1ec2e951cf 100644
--- a/src/test/ui/lint/expr_attr_paren_order.rs
+++ b/src/test/ui/lint/expr_attr_paren_order.rs
@@ -5,16 +5,14 @@ fn main() {
     // Test that attributes on parens get concatenated
     // in the expected order in the hir folder.
 
-    #[deny(non_snake_case)] (
-        #![allow(non_snake_case)]
+    #[deny(non_snake_case)] #[allow(non_snake_case)] (
         {
             let X = 0;
             let _ = X;
         }
     );
 
-    #[allow(non_snake_case)] (
-        #![deny(non_snake_case)]
+    #[allow(non_snake_case)] #[deny(non_snake_case)] (
         {
             let X = 0; //~ ERROR snake case name
             let _ = X;
diff --git a/src/test/ui/lint/expr_attr_paren_order.stderr b/src/test/ui/lint/expr_attr_paren_order.stderr
index c6b373e3f13..42beed10c19 100644
--- a/src/test/ui/lint/expr_attr_paren_order.stderr
+++ b/src/test/ui/lint/expr_attr_paren_order.stderr
@@ -1,14 +1,14 @@
 error: variable `X` should have a snake case name
-  --> $DIR/expr_attr_paren_order.rs:19:17
+  --> $DIR/expr_attr_paren_order.rs:17:17
    |
 LL |             let X = 0;
    |                 ^ help: convert the identifier to snake case (notice the capitalization): `x`
    |
 note: the lint level is defined here
-  --> $DIR/expr_attr_paren_order.rs:17:17
+  --> $DIR/expr_attr_paren_order.rs:15:37
    |
-LL |         #![deny(non_snake_case)]
-   |                 ^^^^^^^^^^^^^^
+LL |     #[allow(non_snake_case)] #[deny(non_snake_case)] (
+   |                                     ^^^^^^^^^^^^^^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/stmt_expr_attrs_placement.rs b/src/test/ui/parser/stmt_expr_attrs_placement.rs
index b8a794f4b92..d488cd0c2d3 100644
--- a/src/test/ui/parser/stmt_expr_attrs_placement.rs
+++ b/src/test/ui/parser/stmt_expr_attrs_placement.rs
@@ -8,15 +8,31 @@ fn main() {
     //~^ ERROR an inner attribute is not permitted in this context
 
     let b = (#![allow(warnings)] 1, 2);
+    //~^ ERROR an inner attribute is not permitted in this context
 
     let c = {
         #![allow(warnings)]
         (#![allow(warnings)] 1, 2)
+        //~^ ERROR an inner attribute is not permitted in this context
     };
 
     let d = {
         #![allow(warnings)]
         let e = (#![allow(warnings)] 1, 2);
+        //~^ ERROR an inner attribute is not permitted in this context
         e
     };
+
+    let e = [#![allow(warnings)] 1, 2];
+    //~^ ERROR an inner attribute is not permitted in this context
+
+    let f = [#![allow(warnings)] 1; 0];
+    //~^ ERROR an inner attribute is not permitted in this context
+
+    let g = match true { #![allow(warnings)] _ => {} };
+    //~^ ERROR an inner attribute is not permitted in this context
+
+    struct MyStruct { field: u8 }
+    let h = MyStruct { #![allow(warnings)] field: 0 };
+    //~^ ERROR an inner attribute is not permitted in this context
 }
diff --git a/src/test/ui/parser/stmt_expr_attrs_placement.stderr b/src/test/ui/parser/stmt_expr_attrs_placement.stderr
index 1886a0f9ba0..185cc009640 100644
--- a/src/test/ui/parser/stmt_expr_attrs_placement.stderr
+++ b/src/test/ui/parser/stmt_expr_attrs_placement.stderr
@@ -6,5 +6,61 @@ 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
+error: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:10:14
+   |
+LL |     let b = (#![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: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:15:10
+   |
+LL |         (#![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: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:21:18
+   |
+LL |         let e = (#![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: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:26:14
+   |
+LL |     let e = [#![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: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:29:14
+   |
+LL |     let f = [#![allow(warnings)] 1; 0];
+   |              ^^^^^^^^^^^^^^^^^^^
+   |
+   = 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: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:32:26
+   |
+LL |     let g = match true { #![allow(warnings)] _ => {} };
+   |                          ^^^^^^^^^^^^^^^^^^^
+   |
+   = 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: an inner attribute is not permitted in this context
+  --> $DIR/stmt_expr_attrs_placement.rs:36:24
+   |
+LL |     let h = MyStruct { #![allow(warnings)] field: 0 };
+   |                        ^^^^^^^^^^^^^^^^^^^
+   |
+   = 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 8 previous errors
 
diff --git a/src/test/ui/proc-macro/inner-attrs.rs b/src/test/ui/proc-macro/inner-attrs.rs
index 14ec57ad626..2e3c704da43 100644
--- a/src/test/ui/proc-macro/inner-attrs.rs
+++ b/src/test/ui/proc-macro/inner-attrs.rs
@@ -1,6 +1,7 @@
 // compile-flags: -Z span-debug --error-format human
 // aux-build:test-macros.rs
 // edition:2018
+
 #![feature(custom_inner_attributes)]
 #![feature(proc_macro_hygiene)]
 #![feature(stmt_expr_attributes)]
@@ -34,8 +35,6 @@ struct MyStruct {
 struct MyDerivePrint {
     field: [u8; {
         match true {
-            #![cfg_attr(not(FALSE), rustc_dummy(first))]
-            #![cfg_attr(not(FALSE), rustc_dummy(second))]
             _ => {
                 #![cfg_attr(not(FALSE), rustc_dummy(third))]
                 true
@@ -46,49 +45,20 @@ struct MyDerivePrint {
 }
 
 fn bar() {
-    (#![print_target_and_args(fifth)] 1, 2);
-    //~^ ERROR expected non-macro inner attribute, found attribute macro
-
     #[print_target_and_args(tuple_attrs)] (
-        #![cfg_attr(FALSE, rustc_dummy)]
         3, 4, {
             #![cfg_attr(not(FALSE), rustc_dummy(innermost))]
             5
         }
     );
 
-    #[print_target_and_args(array_attrs)] [
-        #![rustc_dummy(inner)]
-        true; 0
-    ];
-
     #[print_target_and_args(tuple_attrs)] (
-        #![cfg_attr(FALSE, rustc_dummy)]
         3, 4, {
             #![cfg_attr(not(FALSE), rustc_dummy(innermost))]
             5
         }
     );
 
-    #[print_target_and_args(array_attrs)] [
-        #![rustc_dummy(inner)]
-        true; 0
-    ];
-
-    [#![print_target_and_args(sixth)] 1 , 2];
-    //~^ ERROR expected non-macro inner attribute, found attribute macro
-    [#![print_target_and_args(seventh)] true ; 5];
-    //~^ ERROR expected non-macro inner attribute, found attribute macro
-
-    match 0 {
-        #![print_target_and_args(eighth)]
-        //~^ ERROR expected non-macro inner attribute, found attribute macro
-        _ => {}
-    }
-
-    MyStruct { #![print_target_and_args(ninth)] field: true };
-    //~^ ERROR expected non-macro inner attribute, found attribute macro
-
     for _ in &[true] {
         #![print_attr] //~ ERROR expected non-macro inner attribute
     }
diff --git a/src/test/ui/proc-macro/inner-attrs.stderr b/src/test/ui/proc-macro/inner-attrs.stderr
index 7f22c5f30d6..4da8751ef7f 100644
--- a/src/test/ui/proc-macro/inner-attrs.stderr
+++ b/src/test/ui/proc-macro/inner-attrs.stderr
@@ -1,56 +1,26 @@
-error: expected non-macro inner attribute, found attribute macro `print_target_and_args`
-  --> $DIR/inner-attrs.rs:49:9
-   |
-LL |     (#![print_target_and_args(fifth)] 1, 2);
-   |         ^^^^^^^^^^^^^^^^^^^^^ not a non-macro inner attribute
-
-error: expected non-macro inner attribute, found attribute macro `print_target_and_args`
-  --> $DIR/inner-attrs.rs:78:9
-   |
-LL |     [#![print_target_and_args(sixth)] 1 , 2];
-   |         ^^^^^^^^^^^^^^^^^^^^^ not a non-macro inner attribute
-
-error: expected non-macro inner attribute, found attribute macro `print_target_and_args`
-  --> $DIR/inner-attrs.rs:80:9
-   |
-LL |     [#![print_target_and_args(seventh)] true ; 5];
-   |         ^^^^^^^^^^^^^^^^^^^^^ not a non-macro inner attribute
-
-error: expected non-macro inner attribute, found attribute macro `print_target_and_args`
-  --> $DIR/inner-attrs.rs:84:12
-   |
-LL |         #![print_target_and_args(eighth)]
-   |            ^^^^^^^^^^^^^^^^^^^^^ not a non-macro inner attribute
-
-error: expected non-macro inner attribute, found attribute macro `print_target_and_args`
-  --> $DIR/inner-attrs.rs:89:19
-   |
-LL |     MyStruct { #![print_target_and_args(ninth)] field: true };
-   |                   ^^^^^^^^^^^^^^^^^^^^^ not a non-macro inner attribute
-
 error: expected non-macro inner attribute, found attribute macro `print_attr`
-  --> $DIR/inner-attrs.rs:93:12
+  --> $DIR/inner-attrs.rs:63:12
    |
 LL |         #![print_attr]
    |            ^^^^^^^^^^ not a non-macro inner attribute
 
 error: expected non-macro inner attribute, found attribute macro `print_attr`
-  --> $DIR/inner-attrs.rs:97:12
+  --> $DIR/inner-attrs.rs:67:12
    |
 LL |         #![print_attr]
    |            ^^^^^^^^^^ not a non-macro inner attribute
 
 error: expected non-macro inner attribute, found attribute macro `print_attr`
-  --> $DIR/inner-attrs.rs:101:12
+  --> $DIR/inner-attrs.rs:71:12
    |
 LL |         #![print_attr]
    |            ^^^^^^^^^^ not a non-macro inner attribute
 
 error: expected non-macro inner attribute, found attribute macro `print_attr`
-  --> $DIR/inner-attrs.rs:105:12
+  --> $DIR/inner-attrs.rs:75:12
    |
 LL |         #![print_attr]
    |            ^^^^^^^^^^ not a non-macro inner attribute
 
-error: aborting due to 9 previous errors
+error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/proc-macro/inner-attrs.stdout b/src/test/ui/proc-macro/inner-attrs.stdout
index 2f442e83002..77f42370493 100644
--- a/src/test/ui/proc-macro/inner-attrs.stdout
+++ b/src/test/ui/proc-macro/inner-attrs.stdout
@@ -2,7 +2,7 @@ PRINT-ATTR_ARGS INPUT (DISPLAY): first
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "first",
-        span: $DIR/inner-attrs.rs:15:25: 15:30 (#0),
+        span: $DIR/inner-attrs.rs:16:25: 16:30 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): #[print_target_and_args(second)] fn foo()
@@ -11,74 +11,44 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
     Punct {
         ch: '#',
         spacing: Alone,
-        span: $DIR/inner-attrs.rs:16:1: 16:2 (#0),
+        span: $DIR/inner-attrs.rs:17:1: 17:2 (#0),
     },
     Group {
         delimiter: Bracket,
         stream: TokenStream [
             Ident {
                 ident: "print_target_and_args",
-                span: $DIR/inner-attrs.rs:16:3: 16:24 (#0),
+                span: $DIR/inner-attrs.rs:17:3: 17:24 (#0),
             },
             Group {
                 delimiter: Parenthesis,
                 stream: TokenStream [
                     Ident {
                         ident: "second",
-                        span: $DIR/inner-attrs.rs:16:25: 16:31 (#0),
+                        span: $DIR/inner-attrs.rs:17:25: 17:31 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:16:24: 16:32 (#0),
+                span: $DIR/inner-attrs.rs:17:24: 17:32 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:16:2: 16:33 (#0),
+        span: $DIR/inner-attrs.rs:17:2: 17:33 (#0),
     },
     Ident {
         ident: "fn",
-        span: $DIR/inner-attrs.rs:17:1: 17:3 (#0),
+        span: $DIR/inner-attrs.rs:18:1: 18:3 (#0),
     },
     Ident {
         ident: "foo",
-        span: $DIR/inner-attrs.rs:17:4: 17:7 (#0),
+        span: $DIR/inner-attrs.rs:18:4: 18:7 (#0),
     },
     Group {
         delimiter: Parenthesis,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:17:7: 17:9 (#0),
+        span: $DIR/inner-attrs.rs:18:7: 18:9 (#0),
     },
     Group {
         delimiter: Brace,
         stream: TokenStream [
-            Punct {
-                ch: '#',
-                spacing: Joint,
-                span: $DIR/inner-attrs.rs:18:5: 18:6 (#0),
-            },
-            Punct {
-                ch: '!',
-                spacing: Alone,
-                span: $DIR/inner-attrs.rs:18:6: 18:7 (#0),
-            },
-            Group {
-                delimiter: Bracket,
-                stream: TokenStream [
-                    Ident {
-                        ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:18:8: 18:29 (#0),
-                    },
-                    Group {
-                        delimiter: Parenthesis,
-                        stream: TokenStream [
-                            Ident {
-                                ident: "third",
-                                span: $DIR/inner-attrs.rs:18:30: 18:35 (#0),
-                            },
-                        ],
-                        span: $DIR/inner-attrs.rs:18:29: 18:36 (#0),
-                    },
-                ],
-                span: $DIR/inner-attrs.rs:18:7: 18:37 (#0),
-            },
             Punct {
                 ch: '#',
                 spacing: Joint,
@@ -100,24 +70,54 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
-                                ident: "fourth",
-                                span: $DIR/inner-attrs.rs:19:30: 19:36 (#0),
+                                ident: "third",
+                                span: $DIR/inner-attrs.rs:19:30: 19:35 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:19:29: 19:37 (#0),
+                        span: $DIR/inner-attrs.rs:19:29: 19:36 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:19:7: 19:38 (#0),
+                span: $DIR/inner-attrs.rs:19:7: 19:37 (#0),
+            },
+            Punct {
+                ch: '#',
+                spacing: Joint,
+                span: $DIR/inner-attrs.rs:20:5: 20:6 (#0),
+            },
+            Punct {
+                ch: '!',
+                spacing: Alone,
+                span: $DIR/inner-attrs.rs:20:6: 20:7 (#0),
+            },
+            Group {
+                delimiter: Bracket,
+                stream: TokenStream [
+                    Ident {
+                        ident: "print_target_and_args",
+                        span: $DIR/inner-attrs.rs:20:8: 20:29 (#0),
+                    },
+                    Group {
+                        delimiter: Parenthesis,
+                        stream: TokenStream [
+                            Ident {
+                                ident: "fourth",
+                                span: $DIR/inner-attrs.rs:20:30: 20:36 (#0),
+                            },
+                        ],
+                        span: $DIR/inner-attrs.rs:20:29: 20:37 (#0),
+                    },
+                ],
+                span: $DIR/inner-attrs.rs:20:7: 20:38 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:17:10: 20:2 (#0),
+        span: $DIR/inner-attrs.rs:18:10: 21:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): second
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "second",
-        span: $DIR/inner-attrs.rs:16:25: 16:31 (#0),
+        span: $DIR/inner-attrs.rs:17:25: 17:31 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): fn foo()
@@ -125,16 +125,16 @@ PRINT-ATTR INPUT (DISPLAY): fn foo()
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "fn",
-        span: $DIR/inner-attrs.rs:17:1: 17:3 (#0),
+        span: $DIR/inner-attrs.rs:18:1: 18:3 (#0),
     },
     Ident {
         ident: "foo",
-        span: $DIR/inner-attrs.rs:17:4: 17:7 (#0),
+        span: $DIR/inner-attrs.rs:18:4: 18:7 (#0),
     },
     Group {
         delimiter: Parenthesis,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:17:7: 17:9 (#0),
+        span: $DIR/inner-attrs.rs:18:7: 18:9 (#0),
     },
     Group {
         delimiter: Brace,
@@ -142,88 +142,88 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
             Punct {
                 ch: '#',
                 spacing: Joint,
-                span: $DIR/inner-attrs.rs:18:5: 18:6 (#0),
+                span: $DIR/inner-attrs.rs:19:5: 19:6 (#0),
             },
             Punct {
                 ch: '!',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:18:6: 18:7 (#0),
+                span: $DIR/inner-attrs.rs:19:6: 19:7 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:18:8: 18:29 (#0),
+                        span: $DIR/inner-attrs.rs:19:8: 19:29 (#0),
                     },
                     Group {
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
                                 ident: "third",
-                                span: $DIR/inner-attrs.rs:18:30: 18:35 (#0),
+                                span: $DIR/inner-attrs.rs:19:30: 19:35 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:18:29: 18:36 (#0),
+                        span: $DIR/inner-attrs.rs:19:29: 19:36 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:18:7: 18:37 (#0),
+                span: $DIR/inner-attrs.rs:19:7: 19:37 (#0),
             },
             Punct {
                 ch: '#',
                 spacing: Joint,
-                span: $DIR/inner-attrs.rs:19:5: 19:6 (#0),
+                span: $DIR/inner-attrs.rs:20:5: 20:6 (#0),
             },
             Punct {
                 ch: '!',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:19:6: 19:7 (#0),
+                span: $DIR/inner-attrs.rs:20:6: 20:7 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:19:8: 19:29 (#0),
+                        span: $DIR/inner-attrs.rs:20:8: 20:29 (#0),
                     },
                     Group {
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
                                 ident: "fourth",
-                                span: $DIR/inner-attrs.rs:19:30: 19:36 (#0),
+                                span: $DIR/inner-attrs.rs:20:30: 20:36 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:19:29: 19:37 (#0),
+                        span: $DIR/inner-attrs.rs:20:29: 20:37 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:19:7: 19:38 (#0),
+                span: $DIR/inner-attrs.rs:20:7: 20:38 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:17:10: 20:2 (#0),
+        span: $DIR/inner-attrs.rs:18:10: 21:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): third
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "third",
-        span: $DIR/inner-attrs.rs:18:30: 18:35 (#0),
+        span: $DIR/inner-attrs.rs:19:30: 19:35 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): fn foo() { # ! [print_target_and_args(fourth)] }
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "fn",
-        span: $DIR/inner-attrs.rs:17:1: 17:3 (#0),
+        span: $DIR/inner-attrs.rs:18:1: 18:3 (#0),
     },
     Ident {
         ident: "foo",
-        span: $DIR/inner-attrs.rs:17:4: 17:7 (#0),
+        span: $DIR/inner-attrs.rs:18:4: 18:7 (#0),
     },
     Group {
         delimiter: Parenthesis,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:17:7: 17:9 (#0),
+        span: $DIR/inner-attrs.rs:18:7: 18:9 (#0),
     },
     Group {
         delimiter: Brace,
@@ -231,70 +231,70 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
             Punct {
                 ch: '#',
                 spacing: Joint,
-                span: $DIR/inner-attrs.rs:19:5: 19:6 (#0),
+                span: $DIR/inner-attrs.rs:20:5: 20:6 (#0),
             },
             Punct {
                 ch: '!',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:19:6: 19:7 (#0),
+                span: $DIR/inner-attrs.rs:20:6: 20:7 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:19:8: 19:29 (#0),
+                        span: $DIR/inner-attrs.rs:20:8: 20:29 (#0),
                     },
                     Group {
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
                                 ident: "fourth",
-                                span: $DIR/inner-attrs.rs:19:30: 19:36 (#0),
+                                span: $DIR/inner-attrs.rs:20:30: 20:36 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:19:29: 19:37 (#0),
+                        span: $DIR/inner-attrs.rs:20:29: 20:37 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:19:7: 19:38 (#0),
+                span: $DIR/inner-attrs.rs:20:7: 20:38 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:17:10: 20:2 (#0),
+        span: $DIR/inner-attrs.rs:18:10: 21:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): fourth
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "fourth",
-        span: $DIR/inner-attrs.rs:19:30: 19:36 (#0),
+        span: $DIR/inner-attrs.rs:20:30: 20:36 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): fn foo() { }
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "fn",
-        span: $DIR/inner-attrs.rs:17:1: 17:3 (#0),
+        span: $DIR/inner-attrs.rs:18:1: 18:3 (#0),
     },
     Ident {
         ident: "foo",
-        span: $DIR/inner-attrs.rs:17:4: 17:7 (#0),
+        span: $DIR/inner-attrs.rs:18:4: 18:7 (#0),
     },
     Group {
         delimiter: Parenthesis,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:17:7: 17:9 (#0),
+        span: $DIR/inner-attrs.rs:18:7: 18:9 (#0),
     },
     Group {
         delimiter: Brace,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:17:10: 20:2 (#0),
+        span: $DIR/inner-attrs.rs:18:10: 21:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): mod_first
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod_first",
-        span: $DIR/inner-attrs.rs:22:25: 22:34 (#0),
+        span: $DIR/inner-attrs.rs:23:25: 23:34 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): #[print_target_and_args(mod_second)] mod inline_mod
@@ -306,69 +306,39 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
     Punct {
         ch: '#',
         spacing: Alone,
-        span: $DIR/inner-attrs.rs:23:1: 23:2 (#0),
+        span: $DIR/inner-attrs.rs:24:1: 24:2 (#0),
     },
     Group {
         delimiter: Bracket,
         stream: TokenStream [
             Ident {
                 ident: "print_target_and_args",
-                span: $DIR/inner-attrs.rs:23:3: 23:24 (#0),
+                span: $DIR/inner-attrs.rs:24:3: 24:24 (#0),
             },
             Group {
                 delimiter: Parenthesis,
                 stream: TokenStream [
                     Ident {
                         ident: "mod_second",
-                        span: $DIR/inner-attrs.rs:23:25: 23:35 (#0),
+                        span: $DIR/inner-attrs.rs:24:25: 24:35 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:23:24: 23:36 (#0),
+                span: $DIR/inner-attrs.rs:24:24: 24:36 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:23:2: 23:37 (#0),
+        span: $DIR/inner-attrs.rs:24:2: 24:37 (#0),
     },
     Ident {
         ident: "mod",
-        span: $DIR/inner-attrs.rs:24:1: 24:4 (#0),
+        span: $DIR/inner-attrs.rs:25:1: 25:4 (#0),
     },
     Ident {
         ident: "inline_mod",
-        span: $DIR/inner-attrs.rs:24:5: 24:15 (#0),
+        span: $DIR/inner-attrs.rs:25:5: 25:15 (#0),
     },
     Group {
         delimiter: Brace,
         stream: TokenStream [
-            Punct {
-                ch: '#',
-                spacing: Joint,
-                span: $DIR/inner-attrs.rs:25:5: 25:6 (#0),
-            },
-            Punct {
-                ch: '!',
-                spacing: Alone,
-                span: $DIR/inner-attrs.rs:25:6: 25:7 (#0),
-            },
-            Group {
-                delimiter: Bracket,
-                stream: TokenStream [
-                    Ident {
-                        ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:25:8: 25:29 (#0),
-                    },
-                    Group {
-                        delimiter: Parenthesis,
-                        stream: TokenStream [
-                            Ident {
-                                ident: "mod_third",
-                                span: $DIR/inner-attrs.rs:25:30: 25:39 (#0),
-                            },
-                        ],
-                        span: $DIR/inner-attrs.rs:25:29: 25:40 (#0),
-                    },
-                ],
-                span: $DIR/inner-attrs.rs:25:7: 25:41 (#0),
-            },
             Punct {
                 ch: '#',
                 spacing: Joint,
@@ -390,24 +360,54 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
-                                ident: "mod_fourth",
-                                span: $DIR/inner-attrs.rs:26:30: 26:40 (#0),
+                                ident: "mod_third",
+                                span: $DIR/inner-attrs.rs:26:30: 26:39 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:26:29: 26:41 (#0),
+                        span: $DIR/inner-attrs.rs:26:29: 26:40 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:26:7: 26:42 (#0),
+                span: $DIR/inner-attrs.rs:26:7: 26:41 (#0),
+            },
+            Punct {
+                ch: '#',
+                spacing: Joint,
+                span: $DIR/inner-attrs.rs:27:5: 27:6 (#0),
+            },
+            Punct {
+                ch: '!',
+                spacing: Alone,
+                span: $DIR/inner-attrs.rs:27:6: 27:7 (#0),
+            },
+            Group {
+                delimiter: Bracket,
+                stream: TokenStream [
+                    Ident {
+                        ident: "print_target_and_args",
+                        span: $DIR/inner-attrs.rs:27:8: 27:29 (#0),
+                    },
+                    Group {
+                        delimiter: Parenthesis,
+                        stream: TokenStream [
+                            Ident {
+                                ident: "mod_fourth",
+                                span: $DIR/inner-attrs.rs:27:30: 27:40 (#0),
+                            },
+                        ],
+                        span: $DIR/inner-attrs.rs:27:29: 27:41 (#0),
+                    },
+                ],
+                span: $DIR/inner-attrs.rs:27:7: 27:42 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:24:16: 27:2 (#0),
+        span: $DIR/inner-attrs.rs:25:16: 28:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): mod_second
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod_second",
-        span: $DIR/inner-attrs.rs:23:25: 23:35 (#0),
+        span: $DIR/inner-attrs.rs:24:25: 24:35 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): mod inline_mod
@@ -418,11 +418,11 @@ PRINT-ATTR INPUT (DISPLAY): mod inline_mod
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod",
-        span: $DIR/inner-attrs.rs:24:1: 24:4 (#0),
+        span: $DIR/inner-attrs.rs:25:1: 25:4 (#0),
     },
     Ident {
         ident: "inline_mod",
-        span: $DIR/inner-attrs.rs:24:5: 24:15 (#0),
+        span: $DIR/inner-attrs.rs:25:5: 25:15 (#0),
     },
     Group {
         delimiter: Brace,
@@ -430,83 +430,83 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
             Punct {
                 ch: '#',
                 spacing: Joint,
-                span: $DIR/inner-attrs.rs:25:5: 25:6 (#0),
+                span: $DIR/inner-attrs.rs:26:5: 26:6 (#0),
             },
             Punct {
                 ch: '!',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:25:6: 25:7 (#0),
+                span: $DIR/inner-attrs.rs:26:6: 26:7 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:25:8: 25:29 (#0),
+                        span: $DIR/inner-attrs.rs:26:8: 26:29 (#0),
                     },
                     Group {
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
                                 ident: "mod_third",
-                                span: $DIR/inner-attrs.rs:25:30: 25:39 (#0),
+                                span: $DIR/inner-attrs.rs:26:30: 26:39 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:25:29: 25:40 (#0),
+                        span: $DIR/inner-attrs.rs:26:29: 26:40 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:25:7: 25:41 (#0),
+                span: $DIR/inner-attrs.rs:26:7: 26:41 (#0),
             },
             Punct {
                 ch: '#',
                 spacing: Joint,
-                span: $DIR/inner-attrs.rs:26:5: 26:6 (#0),
+                span: $DIR/inner-attrs.rs:27:5: 27:6 (#0),
             },
             Punct {
                 ch: '!',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:26:6: 26:7 (#0),
+                span: $DIR/inner-attrs.rs:27:6: 27:7 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:26:8: 26:29 (#0),
+                        span: $DIR/inner-attrs.rs:27:8: 27:29 (#0),
                     },
                     Group {
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
                                 ident: "mod_fourth",
-                                span: $DIR/inner-attrs.rs:26:30: 26:40 (#0),
+                                span: $DIR/inner-attrs.rs:27:30: 27:40 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:26:29: 26:41 (#0),
+                        span: $DIR/inner-attrs.rs:27:29: 27:41 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:26:7: 26:42 (#0),
+                span: $DIR/inner-attrs.rs:27:7: 27:42 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:24:16: 27:2 (#0),
+        span: $DIR/inner-attrs.rs:25:16: 28:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): mod_third
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod_third",
-        span: $DIR/inner-attrs.rs:25:30: 25:39 (#0),
+        span: $DIR/inner-attrs.rs:26:30: 26:39 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): mod inline_mod { # ! [print_target_and_args(mod_fourth)] }
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod",
-        span: $DIR/inner-attrs.rs:24:1: 24:4 (#0),
+        span: $DIR/inner-attrs.rs:25:1: 25:4 (#0),
     },
     Ident {
         ident: "inline_mod",
-        span: $DIR/inner-attrs.rs:24:5: 24:15 (#0),
+        span: $DIR/inner-attrs.rs:25:5: 25:15 (#0),
     },
     Group {
         delimiter: Brace,
@@ -514,192 +514,125 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
             Punct {
                 ch: '#',
                 spacing: Joint,
-                span: $DIR/inner-attrs.rs:26:5: 26:6 (#0),
+                span: $DIR/inner-attrs.rs:27:5: 27:6 (#0),
             },
             Punct {
                 ch: '!',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:26:6: 26:7 (#0),
+                span: $DIR/inner-attrs.rs:27:6: 27:7 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "print_target_and_args",
-                        span: $DIR/inner-attrs.rs:26:8: 26:29 (#0),
+                        span: $DIR/inner-attrs.rs:27:8: 27:29 (#0),
                     },
                     Group {
                         delimiter: Parenthesis,
                         stream: TokenStream [
                             Ident {
                                 ident: "mod_fourth",
-                                span: $DIR/inner-attrs.rs:26:30: 26:40 (#0),
+                                span: $DIR/inner-attrs.rs:27:30: 27:40 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:26:29: 26:41 (#0),
+                        span: $DIR/inner-attrs.rs:27:29: 27:41 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:26:7: 26:42 (#0),
+                span: $DIR/inner-attrs.rs:27:7: 27:42 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:24:16: 27:2 (#0),
+        span: $DIR/inner-attrs.rs:25:16: 28:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): mod_fourth
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod_fourth",
-        span: $DIR/inner-attrs.rs:26:30: 26:40 (#0),
+        span: $DIR/inner-attrs.rs:27:30: 27:40 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): mod inline_mod { }
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "mod",
-        span: $DIR/inner-attrs.rs:24:1: 24:4 (#0),
+        span: $DIR/inner-attrs.rs:25:1: 25:4 (#0),
     },
     Ident {
         ident: "inline_mod",
-        span: $DIR/inner-attrs.rs:24:5: 24:15 (#0),
+        span: $DIR/inner-attrs.rs:25:5: 25:15 (#0),
     },
     Group {
         delimiter: Brace,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:24:16: 27:2 (#0),
+        span: $DIR/inner-attrs.rs:25:16: 28:2 (#0),
     },
 ]
 PRINT-DERIVE INPUT (DISPLAY): struct MyDerivePrint
 {
     field :
-    [u8 ;
-     {
-         match true
-         {
-             # ! [rustc_dummy(first)] # ! [rustc_dummy(second)] _ =>
-             { # ! [rustc_dummy(third)] true }
-         } ; 0
-     }]
+    [u8 ; { match true { _ => { # ! [rustc_dummy(third)] true } } ; 0 }]
 }
 PRINT-DERIVE INPUT (DEBUG): TokenStream [
     Ident {
         ident: "struct",
-        span: $DIR/inner-attrs.rs:34:1: 34:7 (#0),
+        span: $DIR/inner-attrs.rs:35:1: 35:7 (#0),
     },
     Ident {
         ident: "MyDerivePrint",
-        span: $DIR/inner-attrs.rs:34:8: 34:21 (#0),
+        span: $DIR/inner-attrs.rs:35:8: 35:21 (#0),
     },
     Group {
         delimiter: Brace,
         stream: TokenStream [
             Ident {
                 ident: "field",
-                span: $DIR/inner-attrs.rs:35:5: 35:10 (#0),
+                span: $DIR/inner-attrs.rs:36:5: 36:10 (#0),
             },
             Punct {
                 ch: ':',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:35:10: 35:11 (#0),
+                span: $DIR/inner-attrs.rs:36:10: 36:11 (#0),
             },
             Group {
                 delimiter: Bracket,
                 stream: TokenStream [
                     Ident {
                         ident: "u8",
-                        span: $DIR/inner-attrs.rs:35:13: 35:15 (#0),
+                        span: $DIR/inner-attrs.rs:36:13: 36:15 (#0),
                     },
                     Punct {
                         ch: ';',
                         spacing: Alone,
-                        span: $DIR/inner-attrs.rs:35:15: 35:16 (#0),
+                        span: $DIR/inner-attrs.rs:36:15: 36:16 (#0),
                     },
                     Group {
                         delimiter: Brace,
                         stream: TokenStream [
                             Ident {
                                 ident: "match",
-                                span: $DIR/inner-attrs.rs:36:9: 36:14 (#0),
+                                span: $DIR/inner-attrs.rs:37:9: 37:14 (#0),
                             },
                             Ident {
                                 ident: "true",
-                                span: $DIR/inner-attrs.rs:36:15: 36:19 (#0),
+                                span: $DIR/inner-attrs.rs:37:15: 37:19 (#0),
                             },
                             Group {
                                 delimiter: Brace,
                                 stream: TokenStream [
-                                    Punct {
-                                        ch: '#',
-                                        spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:37:13: 37:14 (#0),
-                                    },
-                                    Punct {
-                                        ch: '!',
-                                        spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:37:14: 37:15 (#0),
-                                    },
-                                    Group {
-                                        delimiter: Bracket,
-                                        stream: TokenStream [
-                                            Ident {
-                                                ident: "rustc_dummy",
-                                                span: $DIR/inner-attrs.rs:37:37: 37:48 (#0),
-                                            },
-                                            Group {
-                                                delimiter: Parenthesis,
-                                                stream: TokenStream [
-                                                    Ident {
-                                                        ident: "first",
-                                                        span: $DIR/inner-attrs.rs:37:49: 37:54 (#0),
-                                                    },
-                                                ],
-                                                span: $DIR/inner-attrs.rs:37:48: 37:55 (#0),
-                                            },
-                                        ],
-                                        span: $DIR/inner-attrs.rs:37:13: 37:14 (#0),
-                                    },
-                                    Punct {
-                                        ch: '#',
-                                        spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:38:13: 38:14 (#0),
-                                    },
-                                    Punct {
-                                        ch: '!',
-                                        spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:38:14: 38:15 (#0),
-                                    },
-                                    Group {
-                                        delimiter: Bracket,
-                                        stream: TokenStream [
-                                            Ident {
-                                                ident: "rustc_dummy",
-                                                span: $DIR/inner-attrs.rs:38:37: 38:48 (#0),
-                                            },
-                                            Group {
-                                                delimiter: Parenthesis,
-                                                stream: TokenStream [
-                                                    Ident {
-                                                        ident: "second",
-                                                        span: $DIR/inner-attrs.rs:38:49: 38:55 (#0),
-                                                    },
-                                                ],
-                                                span: $DIR/inner-attrs.rs:38:48: 38:56 (#0),
-                                            },
-                                        ],
-                                        span: $DIR/inner-attrs.rs:38:13: 38:14 (#0),
-                                    },
                                     Ident {
                                         ident: "_",
-                                        span: $DIR/inner-attrs.rs:39:13: 39:14 (#0),
+                                        span: $DIR/inner-attrs.rs:38:13: 38:14 (#0),
                                     },
                                     Punct {
                                         ch: '=',
                                         spacing: Joint,
-                                        span: $DIR/inner-attrs.rs:39:15: 39:17 (#0),
+                                        span: $DIR/inner-attrs.rs:38:15: 38:17 (#0),
                                     },
                                     Punct {
                                         ch: '>',
                                         spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:39:15: 39:17 (#0),
+                                        span: $DIR/inner-attrs.rs:38:15: 38:17 (#0),
                                     },
                                     Group {
                                         delimiter: Brace,
@@ -707,69 +640,69 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [
                                             Punct {
                                                 ch: '#',
                                                 spacing: Alone,
-                                                span: $DIR/inner-attrs.rs:40:17: 40:18 (#0),
+                                                span: $DIR/inner-attrs.rs:39:17: 39:18 (#0),
                                             },
                                             Punct {
                                                 ch: '!',
                                                 spacing: Alone,
-                                                span: $DIR/inner-attrs.rs:40:18: 40:19 (#0),
+                                                span: $DIR/inner-attrs.rs:39:18: 39:19 (#0),
                                             },
                                             Group {
                                                 delimiter: Bracket,
                                                 stream: TokenStream [
                                                     Ident {
                                                         ident: "rustc_dummy",
-                                                        span: $DIR/inner-attrs.rs:40:41: 40:52 (#0),
+                                                        span: $DIR/inner-attrs.rs:39:41: 39:52 (#0),
                                                     },
                                                     Group {
                                                         delimiter: Parenthesis,
                                                         stream: TokenStream [
                                                             Ident {
                                                                 ident: "third",
-                                                                span: $DIR/inner-attrs.rs:40:53: 40:58 (#0),
+                                                                span: $DIR/inner-attrs.rs:39:53: 39:58 (#0),
                                                             },
                                                         ],
-                                                        span: $DIR/inner-attrs.rs:40:52: 40:59 (#0),
+                                                        span: $DIR/inner-attrs.rs:39:52: 39:59 (#0),
                                                     },
                                                 ],
-                                                span: $DIR/inner-attrs.rs:40:17: 40:18 (#0),
+                                                span: $DIR/inner-attrs.rs:39:17: 39:18 (#0),
                                             },
                                             Ident {
                                                 ident: "true",
-                                                span: $DIR/inner-attrs.rs:41:17: 41:21 (#0),
+                                                span: $DIR/inner-attrs.rs:40:17: 40:21 (#0),
                                             },
                                         ],
-                                        span: $DIR/inner-attrs.rs:39:18: 42:14 (#0),
+                                        span: $DIR/inner-attrs.rs:38:18: 41:14 (#0),
                                     },
                                 ],
-                                span: $DIR/inner-attrs.rs:36:20: 43:10 (#0),
+                                span: $DIR/inner-attrs.rs:37:20: 42:10 (#0),
                             },
                             Punct {
                                 ch: ';',
                                 spacing: Alone,
-                                span: $DIR/inner-attrs.rs:43:10: 43:11 (#0),
+                                span: $DIR/inner-attrs.rs:42:10: 42:11 (#0),
                             },
                             Literal {
                                 kind: Integer,
                                 symbol: "0",
                                 suffix: None,
-                                span: $DIR/inner-attrs.rs:44:9: 44:10 (#0),
+                                span: $DIR/inner-attrs.rs:43:9: 43:10 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:35:17: 45:6 (#0),
+                        span: $DIR/inner-attrs.rs:36:17: 44:6 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:35:12: 45:7 (#0),
+                span: $DIR/inner-attrs.rs:36:12: 44:7 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:34:22: 46:2 (#0),
+        span: $DIR/inner-attrs.rs:35:22: 45:2 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): tuple_attrs
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "tuple_attrs",
-        span: $DIR/inner-attrs.rs:52:29: 52:40 (#0),
+        span: $DIR/inner-attrs.rs:48:29: 48:40 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): (3, 4, { # ! [cfg_attr(not(FALSE), rustc_dummy(innermost))] 5 }) ;
@@ -781,23 +714,23 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
                 kind: Integer,
                 symbol: "3",
                 suffix: None,
-                span: $DIR/inner-attrs.rs:54:9: 54:10 (#0),
+                span: $DIR/inner-attrs.rs:49:9: 49:10 (#0),
             },
             Punct {
                 ch: ',',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:54:10: 54:11 (#0),
+                span: $DIR/inner-attrs.rs:49:10: 49:11 (#0),
             },
             Literal {
                 kind: Integer,
                 symbol: "4",
                 suffix: None,
-                span: $DIR/inner-attrs.rs:54:12: 54:13 (#0),
+                span: $DIR/inner-attrs.rs:49:12: 49:13 (#0),
             },
             Punct {
                 ch: ',',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:54:13: 54:14 (#0),
+                span: $DIR/inner-attrs.rs:49:13: 49:14 (#0),
             },
             Group {
                 delimiter: Brace,
@@ -805,151 +738,85 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
                     Punct {
                         ch: '#',
                         spacing: Joint,
-                        span: $DIR/inner-attrs.rs:55:13: 55:14 (#0),
+                        span: $DIR/inner-attrs.rs:50:13: 50:14 (#0),
                     },
                     Punct {
                         ch: '!',
                         spacing: Alone,
-                        span: $DIR/inner-attrs.rs:55:14: 55:15 (#0),
+                        span: $DIR/inner-attrs.rs:50:14: 50:15 (#0),
                     },
                     Group {
                         delimiter: Bracket,
                         stream: TokenStream [
                             Ident {
                                 ident: "cfg_attr",
-                                span: $DIR/inner-attrs.rs:55:16: 55:24 (#0),
+                                span: $DIR/inner-attrs.rs:50:16: 50:24 (#0),
                             },
                             Group {
                                 delimiter: Parenthesis,
                                 stream: TokenStream [
                                     Ident {
                                         ident: "not",
-                                        span: $DIR/inner-attrs.rs:55:25: 55:28 (#0),
+                                        span: $DIR/inner-attrs.rs:50:25: 50:28 (#0),
                                     },
                                     Group {
                                         delimiter: Parenthesis,
                                         stream: TokenStream [
                                             Ident {
                                                 ident: "FALSE",
-                                                span: $DIR/inner-attrs.rs:55:29: 55:34 (#0),
+                                                span: $DIR/inner-attrs.rs:50:29: 50:34 (#0),
                                             },
                                         ],
-                                        span: $DIR/inner-attrs.rs:55:28: 55:35 (#0),
+                                        span: $DIR/inner-attrs.rs:50:28: 50:35 (#0),
                                     },
                                     Punct {
                                         ch: ',',
                                         spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:55:35: 55:36 (#0),
+                                        span: $DIR/inner-attrs.rs:50:35: 50:36 (#0),
                                     },
                                     Ident {
                                         ident: "rustc_dummy",
-                                        span: $DIR/inner-attrs.rs:55:37: 55:48 (#0),
+                                        span: $DIR/inner-attrs.rs:50:37: 50:48 (#0),
                                     },
                                     Group {
                                         delimiter: Parenthesis,
                                         stream: TokenStream [
                                             Ident {
                                                 ident: "innermost",
-                                                span: $DIR/inner-attrs.rs:55:49: 55:58 (#0),
+                                                span: $DIR/inner-attrs.rs:50:49: 50:58 (#0),
                                             },
                                         ],
-                                        span: $DIR/inner-attrs.rs:55:48: 55:59 (#0),
+                                        span: $DIR/inner-attrs.rs:50:48: 50:59 (#0),
                                     },
                                 ],
-                                span: $DIR/inner-attrs.rs:55:24: 55:60 (#0),
+                                span: $DIR/inner-attrs.rs:50:24: 50:60 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:55:15: 55:61 (#0),
+                        span: $DIR/inner-attrs.rs:50:15: 50:61 (#0),
                     },
                     Literal {
                         kind: Integer,
                         symbol: "5",
                         suffix: None,
-                        span: $DIR/inner-attrs.rs:56:13: 56:14 (#0),
+                        span: $DIR/inner-attrs.rs:51:13: 51:14 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:54:15: 57:10 (#0),
+                span: $DIR/inner-attrs.rs:49:15: 52:10 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:52:43: 58:6 (#0),
+        span: $DIR/inner-attrs.rs:48:43: 53:6 (#0),
     },
     Punct {
         ch: ';',
         spacing: Alone,
-        span: $DIR/inner-attrs.rs:58:6: 58:7 (#0),
-    },
-]
-PRINT-ATTR_ARGS INPUT (DISPLAY): array_attrs
-PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
-    Ident {
-        ident: "array_attrs",
-        span: $DIR/inner-attrs.rs:60:29: 60:40 (#0),
-    },
-]
-PRINT-ATTR INPUT (DISPLAY): [# ! [rustc_dummy(inner)] true ; 0] ;
-PRINT-ATTR INPUT (DEBUG): TokenStream [
-    Group {
-        delimiter: Bracket,
-        stream: TokenStream [
-            Punct {
-                ch: '#',
-                spacing: Joint,
-                span: $DIR/inner-attrs.rs:61:9: 61:10 (#0),
-            },
-            Punct {
-                ch: '!',
-                spacing: Alone,
-                span: $DIR/inner-attrs.rs:61:10: 61:11 (#0),
-            },
-            Group {
-                delimiter: Bracket,
-                stream: TokenStream [
-                    Ident {
-                        ident: "rustc_dummy",
-                        span: $DIR/inner-attrs.rs:61:12: 61:23 (#0),
-                    },
-                    Group {
-                        delimiter: Parenthesis,
-                        stream: TokenStream [
-                            Ident {
-                                ident: "inner",
-                                span: $DIR/inner-attrs.rs:61:24: 61:29 (#0),
-                            },
-                        ],
-                        span: $DIR/inner-attrs.rs:61:23: 61:30 (#0),
-                    },
-                ],
-                span: $DIR/inner-attrs.rs:61:11: 61:31 (#0),
-            },
-            Ident {
-                ident: "true",
-                span: $DIR/inner-attrs.rs:62:9: 62:13 (#0),
-            },
-            Punct {
-                ch: ';',
-                spacing: Alone,
-                span: $DIR/inner-attrs.rs:62:13: 62:14 (#0),
-            },
-            Literal {
-                kind: Integer,
-                symbol: "0",
-                suffix: None,
-                span: $DIR/inner-attrs.rs:62:15: 62:16 (#0),
-            },
-        ],
-        span: $DIR/inner-attrs.rs:60:43: 63:6 (#0),
-    },
-    Punct {
-        ch: ';',
-        spacing: Alone,
-        span: $DIR/inner-attrs.rs:63:6: 63:7 (#0),
+        span: $DIR/inner-attrs.rs:53:6: 53:7 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): tuple_attrs
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "tuple_attrs",
-        span: $DIR/inner-attrs.rs:65:29: 65:40 (#0),
+        span: $DIR/inner-attrs.rs:55:29: 55:40 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): (3, 4, { # ! [cfg_attr(not(FALSE), rustc_dummy(innermost))] 5 }) ;
@@ -961,23 +828,23 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
                 kind: Integer,
                 symbol: "3",
                 suffix: None,
-                span: $DIR/inner-attrs.rs:67:9: 67:10 (#0),
+                span: $DIR/inner-attrs.rs:56:9: 56:10 (#0),
             },
             Punct {
                 ch: ',',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:67:10: 67:11 (#0),
+                span: $DIR/inner-attrs.rs:56:10: 56:11 (#0),
             },
             Literal {
                 kind: Integer,
                 symbol: "4",
                 suffix: None,
-                span: $DIR/inner-attrs.rs:67:12: 67:13 (#0),
+                span: $DIR/inner-attrs.rs:56:12: 56:13 (#0),
             },
             Punct {
                 ch: ',',
                 spacing: Alone,
-                span: $DIR/inner-attrs.rs:67:13: 67:14 (#0),
+                span: $DIR/inner-attrs.rs:56:13: 56:14 (#0),
             },
             Group {
                 delimiter: Brace,
@@ -985,171 +852,105 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
                     Punct {
                         ch: '#',
                         spacing: Joint,
-                        span: $DIR/inner-attrs.rs:68:13: 68:14 (#0),
+                        span: $DIR/inner-attrs.rs:57:13: 57:14 (#0),
                     },
                     Punct {
                         ch: '!',
                         spacing: Alone,
-                        span: $DIR/inner-attrs.rs:68:14: 68:15 (#0),
+                        span: $DIR/inner-attrs.rs:57:14: 57:15 (#0),
                     },
                     Group {
                         delimiter: Bracket,
                         stream: TokenStream [
                             Ident {
                                 ident: "cfg_attr",
-                                span: $DIR/inner-attrs.rs:68:16: 68:24 (#0),
+                                span: $DIR/inner-attrs.rs:57:16: 57:24 (#0),
                             },
                             Group {
                                 delimiter: Parenthesis,
                                 stream: TokenStream [
                                     Ident {
                                         ident: "not",
-                                        span: $DIR/inner-attrs.rs:68:25: 68:28 (#0),
+                                        span: $DIR/inner-attrs.rs:57:25: 57:28 (#0),
                                     },
                                     Group {
                                         delimiter: Parenthesis,
                                         stream: TokenStream [
                                             Ident {
                                                 ident: "FALSE",
-                                                span: $DIR/inner-attrs.rs:68:29: 68:34 (#0),
+                                                span: $DIR/inner-attrs.rs:57:29: 57:34 (#0),
                                             },
                                         ],
-                                        span: $DIR/inner-attrs.rs:68:28: 68:35 (#0),
+                                        span: $DIR/inner-attrs.rs:57:28: 57:35 (#0),
                                     },
                                     Punct {
                                         ch: ',',
                                         spacing: Alone,
-                                        span: $DIR/inner-attrs.rs:68:35: 68:36 (#0),
+                                        span: $DIR/inner-attrs.rs:57:35: 57:36 (#0),
                                     },
                                     Ident {
                                         ident: "rustc_dummy",
-                                        span: $DIR/inner-attrs.rs:68:37: 68:48 (#0),
+                                        span: $DIR/inner-attrs.rs:57:37: 57:48 (#0),
                                     },
                                     Group {
                                         delimiter: Parenthesis,
                                         stream: TokenStream [
                                             Ident {
                                                 ident: "innermost",
-                                                span: $DIR/inner-attrs.rs:68:49: 68:58 (#0),
+                                                span: $DIR/inner-attrs.rs:57:49: 57:58 (#0),
                                             },
                                         ],
-                                        span: $DIR/inner-attrs.rs:68:48: 68:59 (#0),
+                                        span: $DIR/inner-attrs.rs:57:48: 57:59 (#0),
                                     },
                                 ],
-                                span: $DIR/inner-attrs.rs:68:24: 68:60 (#0),
+                                span: $DIR/inner-attrs.rs:57:24: 57:60 (#0),
                             },
                         ],
-                        span: $DIR/inner-attrs.rs:68:15: 68:61 (#0),
+                        span: $DIR/inner-attrs.rs:57:15: 57:61 (#0),
                     },
                     Literal {
                         kind: Integer,
                         symbol: "5",
                         suffix: None,
-                        span: $DIR/inner-attrs.rs:69:13: 69:14 (#0),
+                        span: $DIR/inner-attrs.rs:58:13: 58:14 (#0),
                     },
                 ],
-                span: $DIR/inner-attrs.rs:67:15: 70:10 (#0),
+                span: $DIR/inner-attrs.rs:56:15: 59:10 (#0),
             },
         ],
-        span: $DIR/inner-attrs.rs:65:43: 71:6 (#0),
+        span: $DIR/inner-attrs.rs:55:43: 60:6 (#0),
     },
     Punct {
         ch: ';',
         spacing: Alone,
-        span: $DIR/inner-attrs.rs:71:6: 71:7 (#0),
-    },
-]
-PRINT-ATTR_ARGS INPUT (DISPLAY): array_attrs
-PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
-    Ident {
-        ident: "array_attrs",
-        span: $DIR/inner-attrs.rs:73:29: 73:40 (#0),
-    },
-]
-PRINT-ATTR INPUT (DISPLAY): [# ! [rustc_dummy(inner)] true ; 0] ;
-PRINT-ATTR INPUT (DEBUG): TokenStream [
-    Group {
-        delimiter: Bracket,
-        stream: TokenStream [
-            Punct {
-                ch: '#',
-                spacing: Joint,
-                span: $DIR/inner-attrs.rs:74:9: 74:10 (#0),
-            },
-            Punct {
-                ch: '!',
-                spacing: Alone,
-                span: $DIR/inner-attrs.rs:74:10: 74:11 (#0),
-            },
-            Group {
-                delimiter: Bracket,
-                stream: TokenStream [
-                    Ident {
-                        ident: "rustc_dummy",
-                        span: $DIR/inner-attrs.rs:74:12: 74:23 (#0),
-                    },
-                    Group {
-                        delimiter: Parenthesis,
-                        stream: TokenStream [
-                            Ident {
-                                ident: "inner",
-                                span: $DIR/inner-attrs.rs:74:24: 74:29 (#0),
-                            },
-                        ],
-                        span: $DIR/inner-attrs.rs:74:23: 74:30 (#0),
-                    },
-                ],
-                span: $DIR/inner-attrs.rs:74:11: 74:31 (#0),
-            },
-            Ident {
-                ident: "true",
-                span: $DIR/inner-attrs.rs:75:9: 75:13 (#0),
-            },
-            Punct {
-                ch: ';',
-                spacing: Alone,
-                span: $DIR/inner-attrs.rs:75:13: 75:14 (#0),
-            },
-            Literal {
-                kind: Integer,
-                symbol: "0",
-                suffix: None,
-                span: $DIR/inner-attrs.rs:75:15: 75:16 (#0),
-            },
-        ],
-        span: $DIR/inner-attrs.rs:73:43: 76:6 (#0),
-    },
-    Punct {
-        ch: ';',
-        spacing: Alone,
-        span: $DIR/inner-attrs.rs:76:6: 76:7 (#0),
+        span: $DIR/inner-attrs.rs:60:6: 60:7 (#0),
     },
 ]
 PRINT-ATTR_ARGS INPUT (DISPLAY): tenth
 PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
     Ident {
         ident: "tenth",
-        span: $DIR/inner-attrs.rs:112:42: 112:47 (#0),
+        span: $DIR/inner-attrs.rs:82:42: 82:47 (#0),
     },
 ]
 PRINT-ATTR INPUT (DISPLAY): fn weird_extern() { }
 PRINT-ATTR INPUT (DEBUG): TokenStream [
     Ident {
         ident: "fn",
-        span: $DIR/inner-attrs.rs:111:5: 111:7 (#0),
+        span: $DIR/inner-attrs.rs:81:5: 81:7 (#0),
     },
     Ident {
         ident: "weird_extern",
-        span: $DIR/inner-attrs.rs:111:8: 111:20 (#0),
+        span: $DIR/inner-attrs.rs:81:8: 81:20 (#0),
     },
     Group {
         delimiter: Parenthesis,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:111:20: 111:22 (#0),
+        span: $DIR/inner-attrs.rs:81:20: 81:22 (#0),
     },
     Group {
         delimiter: Brace,
         stream: TokenStream [],
-        span: $DIR/inner-attrs.rs:111:23: 113:6 (#0),
+        span: $DIR/inner-attrs.rs:81:23: 83:6 (#0),
     },
 ]
diff --git a/src/test/ui/proc-macro/simple-tuple.rs b/src/test/ui/proc-macro/simple-tuple.rs
deleted file mode 100644
index c94c5877e22..00000000000
--- a/src/test/ui/proc-macro/simple-tuple.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// check-pass
-// compile-flags: -Z span-debug --error-format human
-// aux-build:test-macros.rs
-// edition:2018
-
-#![feature(proc_macro_hygiene)]
-
-#![no_std] // Don't load unnecessary hygiene information from std
-extern crate std;
-
-#[macro_use]
-extern crate test_macros;
-
-fn main() {
-    #[print_target_and_args(my_arg)] (
-        #![cfg_attr(not(FALSE), allow(unused))]
-        1, 2, 3
-    );
-}
diff --git a/src/test/ui/proc-macro/simple-tuple.stdout b/src/test/ui/proc-macro/simple-tuple.stdout
deleted file mode 100644
index 1cc8579a467..00000000000
--- a/src/test/ui/proc-macro/simple-tuple.stdout
+++ /dev/null
@@ -1,79 +0,0 @@
-PRINT-ATTR_ARGS INPUT (DISPLAY): my_arg
-PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
-    Ident {
-        ident: "my_arg",
-        span: $DIR/simple-tuple.rs:15:29: 15:35 (#0),
-    },
-]
-PRINT-ATTR INPUT (DISPLAY): (# ! [allow(unused)] 1, 2, 3) ;
-PRINT-ATTR INPUT (DEBUG): TokenStream [
-    Group {
-        delimiter: Parenthesis,
-        stream: TokenStream [
-            Punct {
-                ch: '#',
-                spacing: Alone,
-                span: $DIR/simple-tuple.rs:16:9: 16:10 (#0),
-            },
-            Punct {
-                ch: '!',
-                spacing: Alone,
-                span: $DIR/simple-tuple.rs:16:10: 16:11 (#0),
-            },
-            Group {
-                delimiter: Bracket,
-                stream: TokenStream [
-                    Ident {
-                        ident: "allow",
-                        span: $DIR/simple-tuple.rs:16:33: 16:38 (#0),
-                    },
-                    Group {
-                        delimiter: Parenthesis,
-                        stream: TokenStream [
-                            Ident {
-                                ident: "unused",
-                                span: $DIR/simple-tuple.rs:16:39: 16:45 (#0),
-                            },
-                        ],
-                        span: $DIR/simple-tuple.rs:16:38: 16:46 (#0),
-                    },
-                ],
-                span: $DIR/simple-tuple.rs:16:9: 16:10 (#0),
-            },
-            Literal {
-                kind: Integer,
-                symbol: "1",
-                suffix: None,
-                span: $DIR/simple-tuple.rs:17:9: 17:10 (#0),
-            },
-            Punct {
-                ch: ',',
-                spacing: Alone,
-                span: $DIR/simple-tuple.rs:17:10: 17:11 (#0),
-            },
-            Literal {
-                kind: Integer,
-                symbol: "2",
-                suffix: None,
-                span: $DIR/simple-tuple.rs:17:12: 17:13 (#0),
-            },
-            Punct {
-                ch: ',',
-                spacing: Alone,
-                span: $DIR/simple-tuple.rs:17:13: 17:14 (#0),
-            },
-            Literal {
-                kind: Integer,
-                symbol: "3",
-                suffix: None,
-                span: $DIR/simple-tuple.rs:17:15: 17:16 (#0),
-            },
-        ],
-        span: $DIR/simple-tuple.rs:15:38: 18:6 (#0),
-    },
-    Punct {
-        ch: ';',
-        spacing: Alone,
-        span: $DIR/simple-tuple.rs:18:6: 18:7 (#0),
-    },
-]