about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_resolve/src/diagnostics.rs15
-rw-r--r--compiler/rustc_resolve/src/errors.rs52
-rw-r--r--tests/ui/cfg/both-true-false.stderr15
-rw-r--r--tests/ui/cfg/cfg-version/syntax.stderr80
-rw-r--r--tests/ui/cfg/cmdline-false.stderr7
-rw-r--r--tests/ui/cfg/diagnostics-cross-crate.rs4
-rw-r--r--tests/ui/cfg/diagnostics-cross-crate.stderr34
-rw-r--r--tests/ui/cfg/diagnostics-reexport-2.stderr40
-rw-r--r--tests/ui/cfg/diagnostics-reexport.stderr28
-rw-r--r--tests/ui/cfg/diagnostics-same-crate.stderr45
-rw-r--r--tests/ui/cfg/nested-cfg-attr-conditional-compilation.stderr7
-rw-r--r--tests/ui/conditional-compilation/test-cfg.stderr8
-rw-r--r--tests/ui/macros/builtin-std-paths-fail.stderr4
-rw-r--r--tests/ui/macros/macro-inner-attributes.stderr5
-rw-r--r--tests/ui/macros/macro-outer-attributes.stderr7
-rw-r--r--tests/ui/rustdoc/cfg-rustdoc.stderr7
16 files changed, 136 insertions, 222 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs
index e09fbcc8245..11def7e4876 100644
--- a/compiler/rustc_resolve/src/diagnostics.rs
+++ b/compiler/rustc_resolve/src/diagnostics.rs
@@ -2845,16 +2845,13 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
                 continue;
             }
 
-            let note = errors::FoundItemConfigureOut { span: ident.span };
-            err.subdiagnostic(note);
-
-            if let CfgEntry::NameValue { value: Some((feature, _)), .. } = cfg.0 {
-                let note = errors::ItemWasBehindFeature { feature, span: cfg.1 };
-                err.subdiagnostic(note);
+            let item_was = if let CfgEntry::NameValue { value: Some((feature, _)), .. } = cfg.0 {
+                errors::ItemWas::BehindFeature { feature, span: cfg.1 }
             } else {
-                let note = errors::ItemWasCfgOut { span: cfg.1 };
-                err.subdiagnostic(note);
-            }
+                errors::ItemWas::CfgOut { span: cfg.1 }
+            };
+            let note = errors::FoundItemConfigureOut { span: ident.span, item_was };
+            err.subdiagnostic(note);
         }
     }
 }
diff --git a/compiler/rustc_resolve/src/errors.rs b/compiler/rustc_resolve/src/errors.rs
index d6b1e4de6ea..2747ba135ed 100644
--- a/compiler/rustc_resolve/src/errors.rs
+++ b/compiler/rustc_resolve/src/errors.rs
@@ -1,10 +1,13 @@
 use rustc_errors::codes::*;
-use rustc_errors::{Applicability, ElidedLifetimeInPathSubdiag, MultiSpan};
+use rustc_errors::{
+    Applicability, Diag, ElidedLifetimeInPathSubdiag, EmissionGuarantee, IntoDiagArg, MultiSpan,
+    Subdiagnostic,
+};
 use rustc_macros::{Diagnostic, Subdiagnostic};
 use rustc_span::{Ident, Span, Symbol};
 
-use crate::Res;
 use crate::late::PatternSource;
+use crate::{Res, fluent_generated as fluent};
 
 #[derive(Diagnostic)]
 #[diag(resolve_generic_params_from_outer_item, code = E0401)]
@@ -1201,26 +1204,35 @@ pub(crate) struct IdentInScopeButItIsDesc<'a> {
     pub(crate) imported_ident_desc: &'a str,
 }
 
-#[derive(Subdiagnostic)]
-#[note(resolve_found_an_item_configured_out)]
 pub(crate) struct FoundItemConfigureOut {
-    #[primary_span]
-    pub(crate) span: Span,
-}
-
-#[derive(Subdiagnostic)]
-#[note(resolve_item_was_behind_feature)]
-pub(crate) struct ItemWasBehindFeature {
-    pub(crate) feature: Symbol,
-    #[primary_span]
-    pub(crate) span: Span,
-}
-
-#[derive(Subdiagnostic)]
-#[note(resolve_item_was_cfg_out)]
-pub(crate) struct ItemWasCfgOut {
-    #[primary_span]
     pub(crate) span: Span,
+    pub(crate) item_was: ItemWas,
+}
+
+pub(crate) enum ItemWas {
+    BehindFeature { feature: Symbol, span: Span },
+    CfgOut { span: Span },
+}
+
+impl Subdiagnostic for FoundItemConfigureOut {
+    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
+        let mut multispan: MultiSpan = self.span.into();
+        match self.item_was {
+            ItemWas::BehindFeature { feature, span } => {
+                let key = "feature".into();
+                let value = feature.into_diag_arg(&mut None);
+                let msg = diag.dcx.eagerly_translate_to_string(
+                    fluent::resolve_item_was_behind_feature,
+                    [(&key, &value)].into_iter(),
+                );
+                multispan.push_span_label(span, msg);
+            }
+            ItemWas::CfgOut { span } => {
+                multispan.push_span_label(span, fluent::resolve_item_was_cfg_out);
+            }
+        }
+        diag.span_note(multispan, fluent::resolve_found_an_item_configured_out);
+    }
 }
 
 #[derive(Diagnostic)]
diff --git a/tests/ui/cfg/both-true-false.stderr b/tests/ui/cfg/both-true-false.stderr
index 8550444d179..1a7c509aec0 100644
--- a/tests/ui/cfg/both-true-false.stderr
+++ b/tests/ui/cfg/both-true-false.stderr
@@ -7,23 +7,18 @@ LL |     foo();
 note: found an item that was configured out
   --> $DIR/both-true-false.rs:6:4
    |
+LL | #[cfg(false)]
+   |       ----- the item is gated here
+LL | #[cfg(true)]
 LL | fn foo() {}
    |    ^^^
-note: the item is gated here
-  --> $DIR/both-true-false.rs:4:7
-   |
-LL | #[cfg(false)]
-   |       ^^^^^
 note: found an item that was configured out
   --> $DIR/both-true-false.rs:10:4
    |
+LL | #[cfg(false)]
+   |       ----- the item is gated here
 LL | fn foo() {}
    |    ^^^
-note: the item is gated here
-  --> $DIR/both-true-false.rs:9:7
-   |
-LL | #[cfg(false)]
-   |       ^^^^^
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/cfg/cfg-version/syntax.stderr b/tests/ui/cfg/cfg-version/syntax.stderr
index 4ec3e2de797..34ddfff3e8e 100644
--- a/tests/ui/cfg/cfg-version/syntax.stderr
+++ b/tests/ui/cfg/cfg-version/syntax.stderr
@@ -132,13 +132,11 @@ LL |     key_value_form();
 note: found an item that was configured out
   --> $DIR/syntax.rs:32:4
    |
+LL | #[cfg(version = "1.43")]
+   |       ---------------- the item is gated behind the `1.43` feature
+LL |
 LL | fn key_value_form() {}
    |    ^^^^^^^^^^^^^^
-note: the item is gated behind the `1.43` feature
-  --> $DIR/syntax.rs:30:7
-   |
-LL | #[cfg(version = "1.43")]
-   |       ^^^^^^^^^^^^^^^^
 
 error[E0425]: cannot find function `not_numbers_or_periods` in this scope
   --> $DIR/syntax.rs:143:5
@@ -149,13 +147,11 @@ LL |     not_numbers_or_periods();
 note: found an item that was configured out
   --> $DIR/syntax.rs:53:4
    |
+LL | #[cfg(version("foo"))]
+   |              ------- the item is gated here
+LL |
 LL | fn not_numbers_or_periods() {}
    |    ^^^^^^^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:51:14
-   |
-LL | #[cfg(version("foo"))]
-   |              ^^^^^^^
 
 error[E0425]: cannot find function `complex_semver_with_metadata` in this scope
   --> $DIR/syntax.rs:144:5
@@ -166,13 +162,11 @@ LL |     complex_semver_with_metadata();
 note: found an item that was configured out
   --> $DIR/syntax.rs:57:4
    |
+LL | #[cfg(version("1.20.0-stable"))]
+   |              ----------------- the item is gated here
+LL |
 LL | fn complex_semver_with_metadata() {}
    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:55:14
-   |
-LL | #[cfg(version("1.20.0-stable"))]
-   |              ^^^^^^^^^^^^^^^^^
 
 error[E0425]: cannot find function `invalid_major_only` in this scope
   --> $DIR/syntax.rs:145:5
@@ -183,13 +177,11 @@ LL |     invalid_major_only();
 note: found an item that was configured out
   --> $DIR/syntax.rs:80:4
    |
+LL | #[cfg(version("1"))]
+   |              ----- the item is gated here
+LL |
 LL | fn invalid_major_only() {}
    |    ^^^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:78:14
-   |
-LL | #[cfg(version("1"))]
-   |              ^^^^^
 
 error[E0425]: cannot find function `invalid_major_only_zero` in this scope
   --> $DIR/syntax.rs:146:5
@@ -200,13 +192,11 @@ LL |     invalid_major_only_zero();
 note: found an item that was configured out
   --> $DIR/syntax.rs:84:4
    |
+LL | #[cfg(version("0"))]
+   |              ----- the item is gated here
+LL |
 LL | fn invalid_major_only_zero() {}
    |    ^^^^^^^^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:82:14
-   |
-LL | #[cfg(version("0"))]
-   |              ^^^^^
 
 error[E0425]: cannot find function `invalid_major_only_negative` in this scope
   --> $DIR/syntax.rs:147:5
@@ -217,13 +207,11 @@ LL |     invalid_major_only_negative();
 note: found an item that was configured out
   --> $DIR/syntax.rs:97:4
    |
+LL | #[cfg(version("-1"))]
+   |              ------ the item is gated here
+LL |
 LL | fn invalid_major_only_negative() {}
    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:95:14
-   |
-LL | #[cfg(version("-1"))]
-   |              ^^^^^^
 
 error[E0425]: cannot find function `exceed_u16_major` in this scope
   --> $DIR/syntax.rs:148:5
@@ -234,13 +222,11 @@ LL |     exceed_u16_major();
 note: found an item that was configured out
   --> $DIR/syntax.rs:103:4
    |
+LL | #[cfg(version("65536"))]
+   |              --------- the item is gated here
+LL |
 LL | fn exceed_u16_major() {}
    |    ^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:101:14
-   |
-LL | #[cfg(version("65536"))]
-   |              ^^^^^^^^^
 
 error[E0425]: cannot find function `exceed_u16_minor` in this scope
   --> $DIR/syntax.rs:149:5
@@ -251,13 +237,11 @@ LL |     exceed_u16_minor();
 note: found an item that was configured out
   --> $DIR/syntax.rs:107:4
    |
+LL | #[cfg(version("1.65536.0"))]
+   |              ------------- the item is gated here
+LL |
 LL | fn exceed_u16_minor() {}
    |    ^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:105:14
-   |
-LL | #[cfg(version("1.65536.0"))]
-   |              ^^^^^^^^^^^^^
 
 error[E0425]: cannot find function `exceed_u16_patch` in this scope
   --> $DIR/syntax.rs:150:5
@@ -268,13 +252,11 @@ LL |     exceed_u16_patch();
 note: found an item that was configured out
   --> $DIR/syntax.rs:111:4
    |
+LL | #[cfg(version("1.0.65536"))]
+   |              ------------- the item is gated here
+LL |
 LL | fn exceed_u16_patch() {}
    |    ^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:109:14
-   |
-LL | #[cfg(version("1.0.65536"))]
-   |              ^^^^^^^^^^^^^
 
 error[E0425]: cannot find function `exceed_u16_mixed` in this scope
   --> $DIR/syntax.rs:151:5
@@ -285,13 +267,11 @@ LL |     exceed_u16_mixed();
 note: found an item that was configured out
   --> $DIR/syntax.rs:115:4
    |
+LL | #[cfg(version("65536.0.65536"))]
+   |              ----------------- the item is gated here
+LL |
 LL | fn exceed_u16_mixed() {}
    |    ^^^^^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/syntax.rs:113:14
-   |
-LL | #[cfg(version("65536.0.65536"))]
-   |              ^^^^^^^^^^^^^^^^^
 
 error: aborting due to 14 previous errors; 14 warnings emitted
 
diff --git a/tests/ui/cfg/cmdline-false.stderr b/tests/ui/cfg/cmdline-false.stderr
index da5eb0c892a..3d486803821 100644
--- a/tests/ui/cfg/cmdline-false.stderr
+++ b/tests/ui/cfg/cmdline-false.stderr
@@ -7,13 +7,10 @@ LL |     foo();
 note: found an item that was configured out
   --> $DIR/cmdline-false.rs:5:4
    |
+LL | #[cfg(false)]
+   |       ----- the item is gated here
 LL | fn foo() {}
    |    ^^^
-note: the item is gated here
-  --> $DIR/cmdline-false.rs:4:7
-   |
-LL | #[cfg(false)]
-   |       ^^^^^
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/cfg/diagnostics-cross-crate.rs b/tests/ui/cfg/diagnostics-cross-crate.rs
index 00ac7e2fd08..f959332c817 100644
--- a/tests/ui/cfg/diagnostics-cross-crate.rs
+++ b/tests/ui/cfg/diagnostics-cross-crate.rs
@@ -11,24 +11,20 @@ fn main() {
     cfged_out::inner::uwu(); //~ ERROR cannot find function
     //~^ NOTE found an item that was configured out
     //~| NOTE not found in `cfged_out::inner`
-    //~| NOTE the item is gated here
 
     // The module isn't found - we would like to get a diagnostic, but currently don't due to
     // the awkward way the resolver diagnostics are currently implemented.
     cfged_out::inner::doesnt_exist::hello(); //~ ERROR failed to resolve
     //~^ NOTE could not find `doesnt_exist` in `inner`
     //~| NOTE found an item that was configured out
-    //~| NOTE the item is gated here
 
     // It should find the one in the right module, not the wrong one.
     cfged_out::inner::right::meow(); //~ ERROR cannot find function
     //~^ NOTE found an item that was configured out
     //~| NOTE not found in `cfged_out::inner::right
-    //~| NOTE the item is gated behind the `what-a-cool-feature` feature
 
     // Exists in the crate root - diagnostic.
     cfged_out::vanished(); //~ ERROR cannot find function
     //~^ NOTE found an item that was configured out
     //~| NOTE not found in `cfged_out`
-    //~| NOTE the item is gated here
 }
diff --git a/tests/ui/cfg/diagnostics-cross-crate.stderr b/tests/ui/cfg/diagnostics-cross-crate.stderr
index 155b3db2f42..658e5a442bd 100644
--- a/tests/ui/cfg/diagnostics-cross-crate.stderr
+++ b/tests/ui/cfg/diagnostics-cross-crate.stderr
@@ -1,5 +1,5 @@
 error[E0433]: failed to resolve: could not find `doesnt_exist` in `inner`
-  --> $DIR/diagnostics-cross-crate.rs:18:23
+  --> $DIR/diagnostics-cross-crate.rs:17:23
    |
 LL |     cfged_out::inner::doesnt_exist::hello();
    |                       ^^^^^^^^^^^^ could not find `doesnt_exist` in `inner`
@@ -7,13 +7,10 @@ LL |     cfged_out::inner::doesnt_exist::hello();
 note: found an item that was configured out
   --> $DIR/auxiliary/cfged_out.rs:6:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub mod doesnt_exist {
    |             ^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/auxiliary/cfged_out.rs:5:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0425]: cannot find function `uwu` in crate `cfged_out`
   --> $DIR/diagnostics-cross-crate.rs:7:16
@@ -30,16 +27,13 @@ LL |     cfged_out::inner::uwu();
 note: found an item that was configured out
   --> $DIR/auxiliary/cfged_out.rs:3:12
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub fn uwu() {}
    |            ^^^
-note: the item is gated here
-  --> $DIR/auxiliary/cfged_out.rs:2:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0425]: cannot find function `meow` in module `cfged_out::inner::right`
-  --> $DIR/diagnostics-cross-crate.rs:24:30
+  --> $DIR/diagnostics-cross-crate.rs:22:30
    |
 LL |     cfged_out::inner::right::meow();
    |                              ^^^^ not found in `cfged_out::inner::right`
@@ -47,16 +41,13 @@ LL |     cfged_out::inner::right::meow();
 note: found an item that was configured out
   --> $DIR/auxiliary/cfged_out.rs:17:16
    |
+LL |         #[cfg(feature = "what-a-cool-feature")]
+   |               ------------------------------- the item is gated behind the `what-a-cool-feature` feature
 LL |         pub fn meow() {}
    |                ^^^^
-note: the item is gated behind the `what-a-cool-feature` feature
-  --> $DIR/auxiliary/cfged_out.rs:16:15
-   |
-LL |         #[cfg(feature = "what-a-cool-feature")]
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0425]: cannot find function `vanished` in crate `cfged_out`
-  --> $DIR/diagnostics-cross-crate.rs:30:16
+  --> $DIR/diagnostics-cross-crate.rs:27:16
    |
 LL |     cfged_out::vanished();
    |                ^^^^^^^^ not found in `cfged_out`
@@ -64,13 +55,10 @@ LL |     cfged_out::vanished();
 note: found an item that was configured out
   --> $DIR/auxiliary/cfged_out.rs:22:8
    |
+LL | #[cfg(i_dont_exist_and_you_can_do_nothing_about_it)]
+   |       -------------------------------------------- the item is gated here
 LL | pub fn vanished() {}
    |        ^^^^^^^^
-note: the item is gated here
-  --> $DIR/auxiliary/cfged_out.rs:21:7
-   |
-LL | #[cfg(i_dont_exist_and_you_can_do_nothing_about_it)]
-   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/cfg/diagnostics-reexport-2.stderr b/tests/ui/cfg/diagnostics-reexport-2.stderr
index e1f91fcc5d1..713cffce65b 100644
--- a/tests/ui/cfg/diagnostics-reexport-2.stderr
+++ b/tests/ui/cfg/diagnostics-reexport-2.stderr
@@ -7,13 +7,11 @@ LL |     reexport::gated::foo();
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport-2.rs:10:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod gated {
    |             ^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport-2.rs:4:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0433]: failed to resolve: could not find `gated` in `reexport2`
   --> $DIR/diagnostics-reexport-2.rs:46:16
@@ -24,13 +22,11 @@ LL |     reexport2::gated::foo();
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport-2.rs:10:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod gated {
    |             ^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport-2.rs:4:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0433]: failed to resolve: could not find `gated` in `reexport30`
   --> $DIR/diagnostics-reexport-2.rs:50:17
@@ -41,13 +37,11 @@ LL |     reexport30::gated::foo();
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport-2.rs:10:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod gated {
    |             ^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport-2.rs:4:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0433]: failed to resolve: could not find `gated` in `reexport31`
   --> $DIR/diagnostics-reexport-2.rs:54:17
@@ -58,13 +52,11 @@ LL |     reexport31::gated::foo();
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport-2.rs:10:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod gated {
    |             ^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport-2.rs:4:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0433]: failed to resolve: could not find `gated` in `reexport32`
   --> $DIR/diagnostics-reexport-2.rs:58:17
@@ -75,13 +67,11 @@ LL |     reexport32::gated::foo();
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport-2.rs:10:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod gated {
    |             ^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport-2.rs:4:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error: aborting due to 5 previous errors
 
diff --git a/tests/ui/cfg/diagnostics-reexport.stderr b/tests/ui/cfg/diagnostics-reexport.stderr
index bf1bbcba7e4..a3a6e13f475 100644
--- a/tests/ui/cfg/diagnostics-reexport.stderr
+++ b/tests/ui/cfg/diagnostics-reexport.stderr
@@ -7,13 +7,10 @@ LL | pub use a::x;
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport.rs:18:12
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub fn x() {}
    |            ^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport.rs:17:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0432]: unresolved imports `b::x`, `b::y`
   --> $DIR/diagnostics-reexport.rs:22:13
@@ -26,23 +23,17 @@ LL | pub use b::{x, y};
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport.rs:29:12
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub fn x() {}
    |            ^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport.rs:28:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport.rs:32:12
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub fn y() {}
    |            ^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport.rs:31:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0425]: cannot find function `uwu` in module `inner`
   --> $DIR/diagnostics-reexport.rs:38:12
@@ -53,13 +44,10 @@ LL |     inner::uwu();
 note: found an item that was configured out
   --> $DIR/diagnostics-reexport.rs:8:20
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub use super::uwu;
    |                    ^^^
-note: the item is gated here
-  --> $DIR/diagnostics-reexport.rs:7:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/cfg/diagnostics-same-crate.stderr b/tests/ui/cfg/diagnostics-same-crate.stderr
index f6a6fe388c5..a8d789e61d1 100644
--- a/tests/ui/cfg/diagnostics-same-crate.stderr
+++ b/tests/ui/cfg/diagnostics-same-crate.stderr
@@ -7,13 +7,11 @@ LL |     use super::inner::doesnt_exist;
 note: found an item that was configured out
   --> $DIR/diagnostics-same-crate.rs:11:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod doesnt_exist {
    |             ^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-same-crate.rs:8:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0432]: unresolved import `super::inner::doesnt_exist`
   --> $DIR/diagnostics-same-crate.rs:35:23
@@ -24,13 +22,11 @@ LL |     use super::inner::doesnt_exist::hi;
 note: found an item that was configured out
   --> $DIR/diagnostics-same-crate.rs:11:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod doesnt_exist {
    |             ^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-same-crate.rs:8:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0433]: failed to resolve: could not find `doesnt_exist` in `inner`
   --> $DIR/diagnostics-same-crate.rs:53:12
@@ -41,13 +37,11 @@ LL |     inner::doesnt_exist::hello();
 note: found an item that was configured out
   --> $DIR/diagnostics-same-crate.rs:11:13
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
+...
 LL |     pub mod doesnt_exist {
    |             ^^^^^^^^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-same-crate.rs:8:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0425]: cannot find function `uwu` in module `inner`
   --> $DIR/diagnostics-same-crate.rs:49:12
@@ -58,13 +52,10 @@ LL |     inner::uwu();
 note: found an item that was configured out
   --> $DIR/diagnostics-same-crate.rs:5:12
    |
+LL |     #[cfg(false)]
+   |           ----- the item is gated here
 LL |     pub fn uwu() {}
    |            ^^^
-note: the item is gated here
-  --> $DIR/diagnostics-same-crate.rs:4:11
-   |
-LL |     #[cfg(false)]
-   |           ^^^^^
 
 error[E0425]: cannot find function `meow` in module `inner::right`
   --> $DIR/diagnostics-same-crate.rs:57:19
@@ -75,13 +66,10 @@ LL |     inner::right::meow();
 note: found an item that was configured out
   --> $DIR/diagnostics-same-crate.rs:26:16
    |
+LL |         #[cfg(feature = "what-a-cool-feature")]
+   |               ------------------------------- the item is gated behind the `what-a-cool-feature` feature
 LL |         pub fn meow() {}
    |                ^^^^
-note: the item is gated behind the `what-a-cool-feature` feature
-  --> $DIR/diagnostics-same-crate.rs:25:15
-   |
-LL |         #[cfg(feature = "what-a-cool-feature")]
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0425]: cannot find function `uwu` in this scope
   --> $DIR/diagnostics-same-crate.rs:45:5
@@ -98,13 +86,10 @@ LL |     vanished();
 note: found an item that was configured out
   --> $DIR/diagnostics-same-crate.rs:41:8
    |
+LL | #[cfg(i_dont_exist_and_you_can_do_nothing_about_it)]
+   |       -------------------------------------------- the item is gated here
 LL | pub fn vanished() {}
    |        ^^^^^^^^
-note: the item is gated here
-  --> $DIR/diagnostics-same-crate.rs:40:7
-   |
-LL | #[cfg(i_dont_exist_and_you_can_do_nothing_about_it)]
-   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: aborting due to 7 previous errors
 
diff --git a/tests/ui/cfg/nested-cfg-attr-conditional-compilation.stderr b/tests/ui/cfg/nested-cfg-attr-conditional-compilation.stderr
index 44a33adbc47..3f833bd558b 100644
--- a/tests/ui/cfg/nested-cfg-attr-conditional-compilation.stderr
+++ b/tests/ui/cfg/nested-cfg-attr-conditional-compilation.stderr
@@ -7,13 +7,10 @@ LL |     f()
 note: found an item that was configured out
   --> $DIR/nested-cfg-attr-conditional-compilation.rs:14:4
    |
+LL | #[cfg_attr(all(), cfg_attr(all(), cfg(false)))]
+   |                                       ----- the item is gated here
 LL | fn f() {}
    |    ^
-note: the item is gated here
-  --> $DIR/nested-cfg-attr-conditional-compilation.rs:13:39
-   |
-LL | #[cfg_attr(all(), cfg_attr(all(), cfg(false)))]
-   |                                       ^^^^^
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/conditional-compilation/test-cfg.stderr b/tests/ui/conditional-compilation/test-cfg.stderr
index 1212074e417..379456f74b1 100644
--- a/tests/ui/conditional-compilation/test-cfg.stderr
+++ b/tests/ui/conditional-compilation/test-cfg.stderr
@@ -7,13 +7,11 @@ LL |     foo();
 note: found an item that was configured out
   --> $DIR/test-cfg.rs:5:4
    |
+LL | #[cfg(all(foo, bar))] // foo AND bar
+   |                --- the item is gated here
+LL |
 LL | fn foo() {}
    |    ^^^
-note: the item is gated here
-  --> $DIR/test-cfg.rs:3:16
-   |
-LL | #[cfg(all(foo, bar))] // foo AND bar
-   |                ^^^
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/macros/builtin-std-paths-fail.stderr b/tests/ui/macros/builtin-std-paths-fail.stderr
index 49034c3987b..85d2bd2132f 100644
--- a/tests/ui/macros/builtin-std-paths-fail.stderr
+++ b/tests/ui/macros/builtin-std-paths-fail.stderr
@@ -104,8 +104,8 @@ LL | #[std::test]
    |
 note: found an item that was configured out
   --> $SRC_DIR/std/src/lib.rs:LL:COL
-note: the item is gated here
-  --> $SRC_DIR/std/src/lib.rs:LL:COL
+   |
+   = note: the item is gated here
 
 error: aborting due to 16 previous errors
 
diff --git a/tests/ui/macros/macro-inner-attributes.stderr b/tests/ui/macros/macro-inner-attributes.stderr
index cda53497f39..3c043c38abb 100644
--- a/tests/ui/macros/macro-inner-attributes.stderr
+++ b/tests/ui/macros/macro-inner-attributes.stderr
@@ -9,11 +9,8 @@ note: found an item that was configured out
    |
 LL | test!(a,
    |       ^
-note: the item is gated here
-  --> $DIR/macro-inner-attributes.rs:8:13
-   |
 LL |       #[cfg(false)],
-   |             ^^^^^
+   |             ----- the item is gated here
 help: there is a crate or module with a similar name
    |
 LL -     a::bar();
diff --git a/tests/ui/macros/macro-outer-attributes.stderr b/tests/ui/macros/macro-outer-attributes.stderr
index 9215754d4bb..4696bb774e3 100644
--- a/tests/ui/macros/macro-outer-attributes.stderr
+++ b/tests/ui/macros/macro-outer-attributes.stderr
@@ -7,13 +7,10 @@ LL |     a::bar();
 note: found an item that was configured out
   --> $DIR/macro-outer-attributes.rs:9:14
    |
+LL |       #[cfg(false)],
+   |             ----- the item is gated here
 LL |       pub fn bar() { });
    |              ^^^
-note: the item is gated here
-  --> $DIR/macro-outer-attributes.rs:8:13
-   |
-LL |       #[cfg(false)],
-   |             ^^^^^
 help: consider importing this function
    |
 LL + use b::bar;
diff --git a/tests/ui/rustdoc/cfg-rustdoc.stderr b/tests/ui/rustdoc/cfg-rustdoc.stderr
index fd0fcfd01aa..0e8a5dfea61 100644
--- a/tests/ui/rustdoc/cfg-rustdoc.stderr
+++ b/tests/ui/rustdoc/cfg-rustdoc.stderr
@@ -7,13 +7,10 @@ LL |     let f = Foo;
 note: found an item that was configured out
   --> $DIR/cfg-rustdoc.rs:2:12
    |
+LL | #[cfg(doc)]
+   |       --- the item is gated here
 LL | pub struct Foo;
    |            ^^^
-note: the item is gated here
-  --> $DIR/cfg-rustdoc.rs:1:7
-   |
-LL | #[cfg(doc)]
-   |       ^^^
 
 error: aborting due to 1 previous error