about summary refs log tree commit diff
diff options
context:
space:
mode:
authorxFrednet <xFrednet@gmail.com>2024-02-10 21:53:34 +0000
committerxFrednet <xFrednet@gmail.com>2024-06-25 17:22:22 +0200
commit8b14e23dce2d3cc7cb873609a22c727421d02d3b (patch)
tree468f73a9a381b1fc4ea3a9abe23609878b75900a
parentd929a42a664c026167800801b26d734db925314f (diff)
downloadrust-8b14e23dce2d3cc7cb873609a22c727421d02d3b.tar.gz
rust-8b14e23dce2d3cc7cb873609a22c727421d02d3b.zip
RFC 2383: Stabilize `lint_reasons` :tada:
-rw-r--r--compiler/rustc_builtin_macros/src/lib.rs2
-rw-r--r--compiler/rustc_data_structures/src/lib.rs2
-rw-r--r--compiler/rustc_feature/src/accepted.rs2
-rw-r--r--compiler/rustc_feature/src/builtin_attrs.rs6
-rw-r--r--compiler/rustc_feature/src/unstable.rs2
-rw-r--r--compiler/rustc_lint/src/expect.rs5
-rw-r--r--compiler/rustc_lint/src/levels.rs10
-rw-r--r--compiler/rustc_lint_defs/src/builtin.rs26
-rw-r--r--src/tools/rust-analyzer/crates/hir-expand/src/inert_attr_macro.rs6
-rw-r--r--tests/rustdoc-ui/lints/expect-tool-lint-rfc-2383.rs1
-rw-r--r--tests/ui/async-await/in-trait/async-example-desugared-extra.rs2
-rw-r--r--tests/ui/cfg/diagnostics-not-a-def.rs2
-rw-r--r--tests/ui/cfg/diagnostics-not-a-def.stderr2
-rw-r--r--tests/ui/empty/empty-attributes.rs2
-rw-r--r--tests/ui/empty/empty-attributes.stderr18
-rw-r--r--tests/ui/error-codes/E0602.stderr7
-rw-r--r--tests/ui/feature-gates/feature-gate-lint-reasons.rs5
-rw-r--r--tests/ui/feature-gates/feature-gate-lint-reasons.stderr24
-rw-r--r--tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/deep-match-works.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/foreign-dyn-error.stderr2
-rw-r--r--tests/ui/impl-trait/in-trait/foreign.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/foreign.stderr8
-rw-r--r--tests/ui/impl-trait/in-trait/nested-rpitit.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/reveal.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.stderr2
-rw-r--r--tests/ui/impl-trait/in-trait/signature-mismatch.failure.stderr2
-rw-r--r--tests/ui/impl-trait/in-trait/signature-mismatch.rs2
-rw-r--r--tests/ui/impl-trait/in-trait/specialization-substs-remap.rs1
-rw-r--r--tests/ui/impl-trait/in-trait/success.rs2
-rw-r--r--tests/ui/lint/cli-unknown-force-warn.stderr7
-rw-r--r--tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.rs1
-rw-r--r--tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.stderr2
-rw-r--r--tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.rs1
-rw-r--r--tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.stderr2
-rw-r--r--tests/ui/lint/dead-code/allow-or-expect-dead_code-114557.rs1
-rw-r--r--tests/ui/lint/empty-lint-attributes.rs2
-rw-r--r--tests/ui/lint/lint-removed-cmdline-deny.stderr7
-rw-r--r--tests/ui/lint/lint-removed-cmdline.stderr7
-rw-r--r--tests/ui/lint/lint-renamed-cmdline-deny.stderr8
-rw-r--r--tests/ui/lint/lint-renamed-cmdline.stderr8
-rw-r--r--tests/ui/lint/lint-unexported-no-mangle.stderr12
-rw-r--r--tests/ui/lint/lint-unknown-lint-cmdline-deny.stderr13
-rw-r--r--tests/ui/lint/lint-unknown-lint-cmdline.stderr13
-rw-r--r--tests/ui/lint/reasons-erroneous.rs2
-rw-r--r--tests/ui/lint/reasons-erroneous.stderr16
-rw-r--r--tests/ui/lint/reasons-forbidden.rs2
-rw-r--r--tests/ui/lint/reasons-forbidden.stderr6
-rw-r--r--tests/ui/lint/reasons.rs1
-rw-r--r--tests/ui/lint/reasons.stderr8
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr6
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs9
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr13
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr16
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr14
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr4
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr8
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_unused_inside_impl_block.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr8
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr10
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr10
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr12
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs1
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout8
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/root-attribute-confusion.rs1
-rw-r--r--tests/ui/target-feature/no-llvm-leaks.rs2
89 files changed, 177 insertions, 257 deletions
diff --git a/compiler/rustc_builtin_macros/src/lib.rs b/compiler/rustc_builtin_macros/src/lib.rs
index 8ac59605bc1..b3ec9a577b5 100644
--- a/compiler/rustc_builtin_macros/src/lib.rs
+++ b/compiler/rustc_builtin_macros/src/lib.rs
@@ -12,7 +12,7 @@
 #![feature(decl_macro)]
 #![feature(if_let_guard)]
 #![feature(let_chains)]
-#![feature(lint_reasons)]
+#![cfg_attr(bootstrap, feature(lint_reasons))]
 #![feature(proc_macro_internals)]
 #![feature(proc_macro_quote)]
 #![feature(rustdoc_internals)]
diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs
index cddc67d1578..356ddf014be 100644
--- a/compiler/rustc_data_structures/src/lib.rs
+++ b/compiler/rustc_data_structures/src/lib.rs
@@ -10,6 +10,7 @@
 #![allow(internal_features)]
 #![allow(rustc::default_hash_types)]
 #![allow(rustc::potential_query_instability)]
+#![cfg_attr(bootstrap, feature(lint_reasons))]
 #![cfg_attr(not(parallel_compiler), feature(cell_leak))]
 #![deny(unsafe_op_in_unsafe_fn)]
 #![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
@@ -24,7 +25,6 @@
 #![feature(extend_one)]
 #![feature(hash_raw_entry)]
 #![feature(hasher_prefixfree_extras)]
-#![feature(lint_reasons)]
 #![feature(macro_metavar_expr)]
 #![feature(map_try_insert)]
 #![feature(min_specialization)]
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
index 9beaa6b8d95..f082cc2b569 100644
--- a/compiler/rustc_feature/src/accepted.rs
+++ b/compiler/rustc_feature/src/accepted.rs
@@ -232,6 +232,8 @@ declare_features! (
     (accepted, label_break_value, "1.65.0", Some(48594)),
     /// Allows `let...else` statements.
     (accepted, let_else, "1.65.0", Some(87335)),
+    /// Allows using `reason` in lint attributes and the `#[expect(lint)]` lint check.
+    (accepted, lint_reasons, "CURRENT_RUSTC_VERSION", Some(54503)),
     /// Allows `break {expr}` with a value inside `loop`s.
     (accepted, loop_break_value, "1.19.0", Some(37339)),
     /// Allows use of `?` as the Kleene "at most one" operator in macros.
diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs
index c53bf965139..32a047a9363 100644
--- a/compiler/rustc_feature/src/builtin_attrs.rs
+++ b/compiler/rustc_feature/src/builtin_attrs.rs
@@ -369,9 +369,9 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
         allow, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
         DuplicatesOk, EncodeCrossCrate::No,
     ),
-    gated!(
-        expect, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#), DuplicatesOk,
-        EncodeCrossCrate::No, lint_reasons, experimental!(expect)
+    ungated!(
+        expect, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
+        DuplicatesOk, EncodeCrossCrate::No,
     ),
     ungated!(
         forbid, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs
index 2dfaac8f6e7..f4e20328814 100644
--- a/compiler/rustc_feature/src/unstable.rs
+++ b/compiler/rustc_feature/src/unstable.rs
@@ -512,8 +512,6 @@ declare_features! (
     /// Allows using `#[link(kind = "link-arg", name = "...")]`
     /// to pass custom arguments to the linker.
     (unstable, link_arg_attribute, "1.76.0", Some(99427)),
-    /// Allows using `reason` in lint attributes and the `#[expect(lint)]` lint check.
-    (unstable, lint_reasons, "1.31.0", Some(54503)),
     /// Give access to additional metadata about declarative macro meta-variables.
     (unstable, macro_metavar_expr, "1.61.0", Some(83527)),
     /// Provides a way to concatenate identifiers using metavariable expressions.
diff --git a/compiler/rustc_lint/src/expect.rs b/compiler/rustc_lint/src/expect.rs
index 40db765da53..04c2ebf189f 100644
--- a/compiler/rustc_lint/src/expect.rs
+++ b/compiler/rustc_lint/src/expect.rs
@@ -3,7 +3,6 @@ use rustc_middle::query::Providers;
 use rustc_middle::ty::TyCtxt;
 use rustc_session::lint::builtin::UNFULFILLED_LINT_EXPECTATIONS;
 use rustc_session::lint::LintExpectationId;
-use rustc_span::symbol::sym;
 use rustc_span::Symbol;
 
 pub(crate) fn provide(providers: &mut Providers) {
@@ -11,10 +10,6 @@ pub(crate) fn provide(providers: &mut Providers) {
 }
 
 fn check_expectations(tcx: TyCtxt<'_>, tool_filter: Option<Symbol>) {
-    if !tcx.features().active(sym::lint_reasons) {
-        return;
-    }
-
     let lint_expectations = tcx.lint_expectations(());
     let fulfilled_expectations = tcx.dcx().steal_fulfilled_expectation_ids();
 
diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs
index 1317af50a4a..0df34c32e38 100644
--- a/compiler/rustc_lint/src/levels.rs
+++ b/compiler/rustc_lint/src/levels.rs
@@ -37,7 +37,6 @@ use rustc_session::lint::{
     },
     Level, Lint, LintExpectationId, LintId,
 };
-use rustc_session::parse::feature_err;
 use rustc_session::Session;
 use rustc_span::symbol::{sym, Symbol};
 use rustc_span::{Span, DUMMY_SP};
@@ -788,15 +787,6 @@ impl<'s, P: LintLevelsProvider> LintLevelsBuilder<'s, P> {
                     ast::MetaItemKind::NameValue(ref name_value) => {
                         if item.path == sym::reason {
                             if let ast::LitKind::Str(rationale, _) = name_value.kind {
-                                if !self.features.lint_reasons {
-                                    feature_err(
-                                        &self.sess,
-                                        sym::lint_reasons,
-                                        item.span,
-                                        "lint reasons are experimental",
-                                    )
-                                    .emit();
-                                }
                                 reason = Some(rationale);
                             } else {
                                 sess.dcx().emit_err(MalformedAttribute {
diff --git a/compiler/rustc_lint_defs/src/builtin.rs b/compiler/rustc_lint_defs/src/builtin.rs
index a023d6161df..39066ddcf00 100644
--- a/compiler/rustc_lint_defs/src/builtin.rs
+++ b/compiler/rustc_lint_defs/src/builtin.rs
@@ -608,13 +608,13 @@ declare_lint! {
 }
 
 declare_lint! {
-    /// The `unfulfilled_lint_expectations` lint detects lint trigger expectations
-    /// that have not been fulfilled.
+    /// The `unfulfilled_lint_expectations` lint warns if a lint expectation is
+    /// unfulfilled.
     ///
     /// ### Example
     ///
     /// ```rust
-    /// #![feature(lint_reasons)]
+    /// #![cfg_attr(bootstrap, feature(lint_reasons))]
     ///
     /// #[expect(unused_variables)]
     /// let x = 10;
@@ -625,24 +625,14 @@ declare_lint! {
     ///
     /// ### Explanation
     ///
-    /// It was expected that the marked code would emit a lint. This expectation
-    /// has not been fulfilled.
+    /// The `#[expect]` attribute can be used to create a lint expectation. The
+    /// expectation is fulfilled, if a `#[warn]` attribute at the same location
+    /// would result in a lint emission. If the expectation is unfulfilled,
+    /// because no lint was emitted, this lint will be emitted on the attribute.
     ///
-    /// The `expect` attribute can be removed if this is intended behavior otherwise
-    /// it should be investigated why the expected lint is no longer issued.
-    ///
-    /// In rare cases, the expectation might be emitted at a different location than
-    /// shown in the shown code snippet. In most cases, the `#[expect]` attribute
-    /// works when added to the outer scope. A few lints can only be expected
-    /// on a crate level.
-    ///
-    /// Part of RFC 2383. The progress is being tracked in [#54503]
-    ///
-    /// [#54503]: https://github.com/rust-lang/rust/issues/54503
     pub UNFULFILLED_LINT_EXPECTATIONS,
     Warn,
-    "unfulfilled lint expectation",
-    @feature_gate = rustc_span::sym::lint_reasons;
+    "unfulfilled lint expectation"
 }
 
 declare_lint! {
diff --git a/src/tools/rust-analyzer/crates/hir-expand/src/inert_attr_macro.rs b/src/tools/rust-analyzer/crates/hir-expand/src/inert_attr_macro.rs
index 35fd85bf451..7ead7e93901 100644
--- a/src/tools/rust-analyzer/crates/hir-expand/src/inert_attr_macro.rs
+++ b/src/tools/rust-analyzer/crates/hir-expand/src/inert_attr_macro.rs
@@ -142,9 +142,9 @@ pub const INERT_ATTRIBUTES: &[BuiltinAttribute] = &[
         allow, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
         DuplicatesOk, @only_local: true,
     ),
-    gated!(
-        expect, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#), DuplicatesOk,
-        lint_reasons, experimental!(expect)
+    ungated!(
+        expect, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
+        DuplicatesOk, @only_local: true,
     ),
     ungated!(
         forbid, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
diff --git a/tests/rustdoc-ui/lints/expect-tool-lint-rfc-2383.rs b/tests/rustdoc-ui/lints/expect-tool-lint-rfc-2383.rs
index 169505b0406..87e6aa0c256 100644
--- a/tests/rustdoc-ui/lints/expect-tool-lint-rfc-2383.rs
+++ b/tests/rustdoc-ui/lints/expect-tool-lint-rfc-2383.rs
@@ -1,5 +1,4 @@
 //@ check-pass
-#![feature(lint_reasons)]
 
 //! This file tests the `#[expect]` attribute implementation for tool lints. The same
 //! file is used to test clippy and rustdoc. Any changes to this file should be synced
diff --git a/tests/ui/async-await/in-trait/async-example-desugared-extra.rs b/tests/ui/async-await/in-trait/async-example-desugared-extra.rs
index b4fbcb78c13..d85ad869fd4 100644
--- a/tests/ui/async-await/in-trait/async-example-desugared-extra.rs
+++ b/tests/ui/async-await/in-trait/async-example-desugared-extra.rs
@@ -1,8 +1,6 @@
 //@ check-pass
 //@ edition: 2021
 
-#![feature(lint_reasons)]
-
 use std::future::Future;
 use std::pin::Pin;
 use std::task::Poll;
diff --git a/tests/ui/cfg/diagnostics-not-a-def.rs b/tests/ui/cfg/diagnostics-not-a-def.rs
index 1912cf9f616..3a7ca6240b1 100644
--- a/tests/ui/cfg/diagnostics-not-a-def.rs
+++ b/tests/ui/cfg/diagnostics-not-a-def.rs
@@ -1,5 +1,3 @@
-#![feature(lint_reasons)]
-
 pub mod inner {
     #[expect(unexpected_cfgs)]
     pub fn i_am_here() {
diff --git a/tests/ui/cfg/diagnostics-not-a-def.stderr b/tests/ui/cfg/diagnostics-not-a-def.stderr
index 89bbf574871..51c1c03640f 100644
--- a/tests/ui/cfg/diagnostics-not-a-def.stderr
+++ b/tests/ui/cfg/diagnostics-not-a-def.stderr
@@ -1,5 +1,5 @@
 error[E0425]: cannot find function `i_am_not` in module `inner`
-  --> $DIR/diagnostics-not-a-def.rs:14:12
+  --> $DIR/diagnostics-not-a-def.rs:12:12
    |
 LL |     inner::i_am_not();
    |            ^^^^^^^^ not found in `inner`
diff --git a/tests/ui/empty/empty-attributes.rs b/tests/ui/empty/empty-attributes.rs
index d319227b217..027d30cce17 100644
--- a/tests/ui/empty/empty-attributes.rs
+++ b/tests/ui/empty/empty-attributes.rs
@@ -1,5 +1,3 @@
-#![feature(lint_reasons)]
-
 #![deny(unused_attributes)]
 #![allow()] //~ ERROR unused attribute
 #![expect()] //~ ERROR unused attribute
diff --git a/tests/ui/empty/empty-attributes.stderr b/tests/ui/empty/empty-attributes.stderr
index 01d0d5a6b48..e86dea10c70 100644
--- a/tests/ui/empty/empty-attributes.stderr
+++ b/tests/ui/empty/empty-attributes.stderr
@@ -1,18 +1,18 @@
 error: unused attribute
-  --> $DIR/empty-attributes.rs:11:1
+  --> $DIR/empty-attributes.rs:9:1
    |
 LL | #[repr()]
    | ^^^^^^^^^ help: remove this attribute
    |
    = note: attribute `repr` with an empty list has no effect
 note: the lint level is defined here
-  --> $DIR/empty-attributes.rs:3:9
+  --> $DIR/empty-attributes.rs:1:9
    |
 LL | #![deny(unused_attributes)]
    |         ^^^^^^^^^^^^^^^^^
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:14:1
+  --> $DIR/empty-attributes.rs:12:1
    |
 LL | #[target_feature()]
    | ^^^^^^^^^^^^^^^^^^^ help: remove this attribute
@@ -20,7 +20,7 @@ LL | #[target_feature()]
    = note: attribute `target_feature` with an empty list has no effect
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:4:1
+  --> $DIR/empty-attributes.rs:2:1
    |
 LL | #![allow()]
    | ^^^^^^^^^^^ help: remove this attribute
@@ -28,7 +28,7 @@ LL | #![allow()]
    = note: attribute `allow` with an empty list has no effect
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:5:1
+  --> $DIR/empty-attributes.rs:3:1
    |
 LL | #![expect()]
    | ^^^^^^^^^^^^ help: remove this attribute
@@ -36,7 +36,7 @@ LL | #![expect()]
    = note: attribute `expect` with an empty list has no effect
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:6:1
+  --> $DIR/empty-attributes.rs:4:1
    |
 LL | #![warn()]
    | ^^^^^^^^^^ help: remove this attribute
@@ -44,7 +44,7 @@ LL | #![warn()]
    = note: attribute `warn` with an empty list has no effect
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:7:1
+  --> $DIR/empty-attributes.rs:5:1
    |
 LL | #![deny()]
    | ^^^^^^^^^^ help: remove this attribute
@@ -52,7 +52,7 @@ LL | #![deny()]
    = note: attribute `deny` with an empty list has no effect
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:8:1
+  --> $DIR/empty-attributes.rs:6:1
    |
 LL | #![forbid()]
    | ^^^^^^^^^^^^ help: remove this attribute
@@ -60,7 +60,7 @@ LL | #![forbid()]
    = note: attribute `forbid` with an empty list has no effect
 
 error: unused attribute
-  --> $DIR/empty-attributes.rs:9:1
+  --> $DIR/empty-attributes.rs:7:1
    |
 LL | #![feature()]
    | ^^^^^^^^^^^^^ help: remove this attribute
diff --git a/tests/ui/error-codes/E0602.stderr b/tests/ui/error-codes/E0602.stderr
index b6b5cd5c3d3..b0b6033aadd 100644
--- a/tests/ui/error-codes/E0602.stderr
+++ b/tests/ui/error-codes/E0602.stderr
@@ -13,6 +13,11 @@ warning[E0602]: unknown lint: `bogus`
    = note: requested on the command line with `-D bogus`
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
-warning: 3 warnings emitted
+warning[E0602]: unknown lint: `bogus`
+   |
+   = note: requested on the command line with `-D bogus`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+warning: 4 warnings emitted
 
 For more information about this error, try `rustc --explain E0602`.
diff --git a/tests/ui/feature-gates/feature-gate-lint-reasons.rs b/tests/ui/feature-gates/feature-gate-lint-reasons.rs
deleted file mode 100644
index 7756074e235..00000000000
--- a/tests/ui/feature-gates/feature-gate-lint-reasons.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#![warn(nonstandard_style, reason = "the standard should be respected")]
-//~^ ERROR lint reasons are experimental
-//~| ERROR lint reasons are experimental
-
-fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-lint-reasons.stderr b/tests/ui/feature-gates/feature-gate-lint-reasons.stderr
deleted file mode 100644
index efcb3a10f32..00000000000
--- a/tests/ui/feature-gates/feature-gate-lint-reasons.stderr
+++ /dev/null
@@ -1,24 +0,0 @@
-error[E0658]: lint reasons are experimental
-  --> $DIR/feature-gate-lint-reasons.rs:1:28
-   |
-LL | #![warn(nonstandard_style, reason = "the standard should be respected")]
-   |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #54503 <https://github.com/rust-lang/rust/issues/54503> for more information
-   = help: add `#![feature(lint_reasons)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: lint reasons are experimental
-  --> $DIR/feature-gate-lint-reasons.rs:1:28
-   |
-LL | #![warn(nonstandard_style, reason = "the standard should be respected")]
-   |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #54503 <https://github.com/rust-lang/rust/issues/54503> for more information
-   = help: add `#![feature(lint_reasons)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs b/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs
index a213994ff86..f6120b3fc70 100644
--- a/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs
+++ b/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs
@@ -1,5 +1,3 @@
-#![feature(lint_reasons)]
-
 use std::ops::Deref;
 
 pub trait Foo {
diff --git a/tests/ui/impl-trait/in-trait/deep-match-works.rs b/tests/ui/impl-trait/in-trait/deep-match-works.rs
index 02fe5b0e19b..591429d6047 100644
--- a/tests/ui/impl-trait/in-trait/deep-match-works.rs
+++ b/tests/ui/impl-trait/in-trait/deep-match-works.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 pub struct Wrapper<T>(T);
 
 pub trait Foo {
diff --git a/tests/ui/impl-trait/in-trait/foreign-dyn-error.stderr b/tests/ui/impl-trait/in-trait/foreign-dyn-error.stderr
index 9cc4c4b2f9e..a0840699268 100644
--- a/tests/ui/impl-trait/in-trait/foreign-dyn-error.stderr
+++ b/tests/ui/impl-trait/in-trait/foreign-dyn-error.stderr
@@ -5,7 +5,7 @@ LL |     let _: &dyn rpitit::Foo = todo!();
    |            ^^^^^^^^^^^^^^^^ `Foo` cannot be made into an object
    |
 note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
-  --> $DIR/auxiliary/rpitit.rs:6:21
+  --> $DIR/auxiliary/rpitit.rs:4:21
    |
 LL |     fn bar(self) -> impl Deref<Target = impl Sized>;
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `bar` references an `impl Trait` type in its return type
diff --git a/tests/ui/impl-trait/in-trait/foreign.rs b/tests/ui/impl-trait/in-trait/foreign.rs
index ca759afc2e6..3b6f79a4f52 100644
--- a/tests/ui/impl-trait/in-trait/foreign.rs
+++ b/tests/ui/impl-trait/in-trait/foreign.rs
@@ -1,8 +1,6 @@
 //@ check-pass
 //@ aux-build: rpitit.rs
 
-#![feature(lint_reasons)]
-
 extern crate rpitit;
 
 use rpitit::{Foo, Foreign};
diff --git a/tests/ui/impl-trait/in-trait/foreign.stderr b/tests/ui/impl-trait/in-trait/foreign.stderr
index 1a5a4f2432b..36114dcf02b 100644
--- a/tests/ui/impl-trait/in-trait/foreign.stderr
+++ b/tests/ui/impl-trait/in-trait/foreign.stderr
@@ -1,5 +1,5 @@
 warning: impl trait in impl method signature does not match trait method signature
-  --> $DIR/foreign.rs:23:21
+  --> $DIR/foreign.rs:21:21
    |
 LL |     fn bar(self) -> Arc<String> {
    |                     ^^^^^^^^^^^
@@ -7,7 +7,7 @@ LL |     fn bar(self) -> Arc<String> {
    = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 note: the lint level is defined here
-  --> $DIR/foreign.rs:22:12
+  --> $DIR/foreign.rs:20:12
    |
 LL |     #[warn(refining_impl_trait)]
    |            ^^^^^^^^^^^^^^^^^^^
@@ -18,7 +18,7 @@ LL |     fn bar(self) -> impl Deref<Target = impl Sized> {
    |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 warning: impl trait in impl method signature does not match trait method signature
-  --> $DIR/foreign.rs:33:21
+  --> $DIR/foreign.rs:31:21
    |
 LL |     fn bar(self) -> Arc<String> {
    |                     ^^^^^^^^^^^
@@ -26,7 +26,7 @@ LL |     fn bar(self) -> Arc<String> {
    = note: add `#[allow(refining_impl_trait)]` if it is intended for this to be part of the public API of this crate
    = note: we are soliciting feedback, see issue #121718 <https://github.com/rust-lang/rust/issues/121718> for more information
 note: the lint level is defined here
-  --> $DIR/foreign.rs:31:12
+  --> $DIR/foreign.rs:29:12
    |
 LL |     #[warn(refining_impl_trait)]
    |            ^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/impl-trait/in-trait/nested-rpitit.rs b/tests/ui/impl-trait/in-trait/nested-rpitit.rs
index 91fb5331f76..6e495458228 100644
--- a/tests/ui/impl-trait/in-trait/nested-rpitit.rs
+++ b/tests/ui/impl-trait/in-trait/nested-rpitit.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 use std::fmt::Display;
 use std::ops::Deref;
 
diff --git a/tests/ui/impl-trait/in-trait/reveal.rs b/tests/ui/impl-trait/in-trait/reveal.rs
index f949077a131..f6ce31e3837 100644
--- a/tests/ui/impl-trait/in-trait/reveal.rs
+++ b/tests/ui/impl-trait/in-trait/reveal.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 pub trait Foo {
     fn f() -> Box<impl Sized>;
 }
diff --git a/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.rs b/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.rs
index b9fe8d8bfc5..4e46b7114c1 100644
--- a/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.rs
+++ b/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.rs
@@ -1,7 +1,5 @@
 // issue: 113903
 
-#![feature(lint_reasons)]
-
 use std::ops::Deref;
 
 pub trait Tr {
diff --git a/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.stderr b/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.stderr
index 73ada8d7096..e7d38f22406 100644
--- a/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.stderr
+++ b/tests/ui/impl-trait/in-trait/rpitit-shadowed-by-missing-adt.stderr
@@ -1,5 +1,5 @@
 error[E0412]: cannot find type `Missing` in this scope
-  --> $DIR/rpitit-shadowed-by-missing-adt.rs:8:35
+  --> $DIR/rpitit-shadowed-by-missing-adt.rs:6:35
    |
 LL |     fn w() -> impl Deref<Target = Missing<impl Sized>>;
    |                                   ^^^^^^^ not found in this scope
diff --git a/tests/ui/impl-trait/in-trait/signature-mismatch.failure.stderr b/tests/ui/impl-trait/in-trait/signature-mismatch.failure.stderr
index 0cd76815afa..56b83cbca77 100644
--- a/tests/ui/impl-trait/in-trait/signature-mismatch.failure.stderr
+++ b/tests/ui/impl-trait/in-trait/signature-mismatch.failure.stderr
@@ -1,5 +1,5 @@
 error[E0623]: lifetime mismatch
-  --> $DIR/signature-mismatch.rs:79:10
+  --> $DIR/signature-mismatch.rs:77:10
    |
 LL |         &'a self,
    |         -------- this parameter and the return type are declared with different lifetimes...
diff --git a/tests/ui/impl-trait/in-trait/signature-mismatch.rs b/tests/ui/impl-trait/in-trait/signature-mismatch.rs
index 7a74281b1f2..55b9a0de5ff 100644
--- a/tests/ui/impl-trait/in-trait/signature-mismatch.rs
+++ b/tests/ui/impl-trait/in-trait/signature-mismatch.rs
@@ -2,8 +2,6 @@
 //@ revisions: success failure
 //@[success] check-pass
 
-#![feature(lint_reasons)]
-
 use std::future::Future;
 
 pub trait Captures<'a> {}
diff --git a/tests/ui/impl-trait/in-trait/specialization-substs-remap.rs b/tests/ui/impl-trait/in-trait/specialization-substs-remap.rs
index 3ef6735de80..50bb61c9f02 100644
--- a/tests/ui/impl-trait/in-trait/specialization-substs-remap.rs
+++ b/tests/ui/impl-trait/in-trait/specialization-substs-remap.rs
@@ -1,7 +1,6 @@
 //@ check-pass
 
 #![feature(specialization)]
-#![feature(lint_reasons)]
 #![allow(incomplete_features)]
 
 pub trait Foo {
diff --git a/tests/ui/impl-trait/in-trait/success.rs b/tests/ui/impl-trait/in-trait/success.rs
index c99291def03..97a1ce80997 100644
--- a/tests/ui/impl-trait/in-trait/success.rs
+++ b/tests/ui/impl-trait/in-trait/success.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 use std::fmt::Display;
 
 pub trait Foo {
diff --git a/tests/ui/lint/cli-unknown-force-warn.stderr b/tests/ui/lint/cli-unknown-force-warn.stderr
index 5084b4a4001..cfff190b54a 100644
--- a/tests/ui/lint/cli-unknown-force-warn.stderr
+++ b/tests/ui/lint/cli-unknown-force-warn.stderr
@@ -13,6 +13,11 @@ warning[E0602]: unknown lint: `foo_qux`
    = note: requested on the command line with `--force-warn foo_qux`
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
-warning: 3 warnings emitted
+warning[E0602]: unknown lint: `foo_qux`
+   |
+   = note: requested on the command line with `--force-warn foo_qux`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+warning: 4 warnings emitted
 
 For more information about this error, try `rustc --explain E0602`.
diff --git a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.rs b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.rs
index 37c78bc68ed..20999df9844 100644
--- a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.rs
+++ b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.rs
@@ -7,7 +7,6 @@
 // it also checks that the `dead_code` lint is also *NOT* emited
 // for `bar` as it's suppresed by the `#[expect]` on `bar`
 
-#![feature(lint_reasons)]
 #![warn(dead_code)] // to override compiletest
 
 fn bar() {}
diff --git a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.stderr b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.stderr
index d5c4dabed01..a199859cb20 100644
--- a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.stderr
+++ b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-2.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/allow-or-expect-dead_code-114557-2.rs:15:10
+  --> $DIR/allow-or-expect-dead_code-114557-2.rs:14:10
    |
 LL | #[expect(dead_code)]
    |          ^^^^^^^^^
diff --git a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.rs b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.rs
index d2ead24b57c..08103b23387 100644
--- a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.rs
+++ b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.rs
@@ -3,7 +3,6 @@
 // this test makes sure that the `unfulfilled_lint_expectations` lint
 // is being emited for `foo` as foo is not dead code, it's pub
 
-#![feature(lint_reasons)]
 #![warn(dead_code)] // to override compiletest
 
 #[expect(dead_code)]
diff --git a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.stderr b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.stderr
index c954a75b394..3169f0123e9 100644
--- a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.stderr
+++ b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557-3.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/allow-or-expect-dead_code-114557-3.rs:9:10
+  --> $DIR/allow-or-expect-dead_code-114557-3.rs:8:10
    |
 LL | #[expect(dead_code)]
    |          ^^^^^^^^^
diff --git a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557.rs b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557.rs
index 323bb06b681..f2625f0781f 100644
--- a/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557.rs
+++ b/tests/ui/lint/dead-code/allow-or-expect-dead_code-114557.rs
@@ -4,7 +4,6 @@
 // this test checks that no matter if we put #[allow(dead_code)]
 // or #[expect(dead_code)], no warning is being emited
 
-#![feature(lint_reasons)]
 #![warn(dead_code)] // to override compiletest
 
 fn f() {}
diff --git a/tests/ui/lint/empty-lint-attributes.rs b/tests/ui/lint/empty-lint-attributes.rs
index b12b4064990..0193345e5c8 100644
--- a/tests/ui/lint/empty-lint-attributes.rs
+++ b/tests/ui/lint/empty-lint-attributes.rs
@@ -1,5 +1,3 @@
-#![feature(lint_reasons)]
-
 //@ check-pass
 
 // Empty (and reason-only) lint attributes are legal—although we may want to
diff --git a/tests/ui/lint/lint-removed-cmdline-deny.stderr b/tests/ui/lint/lint-removed-cmdline-deny.stderr
index 3321afa7fcd..2a24e795f44 100644
--- a/tests/ui/lint/lint-removed-cmdline-deny.stderr
+++ b/tests/ui/lint/lint-removed-cmdline-deny.stderr
@@ -26,5 +26,10 @@ LL | #[deny(warnings)]
    |        ^^^^^^^^
    = note: `#[deny(unused_variables)]` implied by `#[deny(warnings)]`
 
-error: aborting due to 4 previous errors
+error: lint `raw_pointer_derive` has been removed: using derive with raw pointers is ok
+   |
+   = note: requested on the command line with `-D raw_pointer_derive`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 5 previous errors
 
diff --git a/tests/ui/lint/lint-removed-cmdline.stderr b/tests/ui/lint/lint-removed-cmdline.stderr
index fd63433c308..78ae2fd8fbf 100644
--- a/tests/ui/lint/lint-removed-cmdline.stderr
+++ b/tests/ui/lint/lint-removed-cmdline.stderr
@@ -26,5 +26,10 @@ LL | #[deny(warnings)]
    |        ^^^^^^^^
    = note: `#[deny(unused_variables)]` implied by `#[deny(warnings)]`
 
-error: aborting due to 1 previous error; 3 warnings emitted
+warning: lint `raw_pointer_derive` has been removed: using derive with raw pointers is ok
+   |
+   = note: requested on the command line with `-D raw_pointer_derive`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 1 previous error; 4 warnings emitted
 
diff --git a/tests/ui/lint/lint-renamed-cmdline-deny.stderr b/tests/ui/lint/lint-renamed-cmdline-deny.stderr
index 0e182a4e5de..3c1a59ec1e1 100644
--- a/tests/ui/lint/lint-renamed-cmdline-deny.stderr
+++ b/tests/ui/lint/lint-renamed-cmdline-deny.stderr
@@ -29,5 +29,11 @@ LL | #[deny(unused)]
    |        ^^^^^^
    = note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
 
-error: aborting due to 4 previous errors
+error: lint `bare_trait_object` has been renamed to `bare_trait_objects`
+   |
+   = help: use the new name `bare_trait_objects`
+   = note: requested on the command line with `-D bare_trait_object`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 5 previous errors
 
diff --git a/tests/ui/lint/lint-renamed-cmdline.stderr b/tests/ui/lint/lint-renamed-cmdline.stderr
index d6bb72f34dc..6544416f611 100644
--- a/tests/ui/lint/lint-renamed-cmdline.stderr
+++ b/tests/ui/lint/lint-renamed-cmdline.stderr
@@ -29,5 +29,11 @@ LL | #[deny(unused)]
    |        ^^^^^^
    = note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
 
-error: aborting due to 1 previous error; 3 warnings emitted
+warning: lint `bare_trait_object` has been renamed to `bare_trait_objects`
+   |
+   = help: use the new name `bare_trait_objects`
+   = note: requested on the command line with `-D bare_trait_object`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 1 previous error; 4 warnings emitted
 
diff --git a/tests/ui/lint/lint-unexported-no-mangle.stderr b/tests/ui/lint/lint-unexported-no-mangle.stderr
index 0efec51abaf..39377b6fe84 100644
--- a/tests/ui/lint/lint-unexported-no-mangle.stderr
+++ b/tests/ui/lint/lint-unexported-no-mangle.stderr
@@ -45,5 +45,15 @@ LL | pub const PUB_FOO: u64 = 1;
    | |
    | help: try a static value: `pub static`
 
-error: aborting due to 2 previous errors; 6 warnings emitted
+warning: lint `private_no_mangle_fns` has been removed: no longer a warning, `#[no_mangle]` functions always exported
+   |
+   = note: requested on the command line with `-F private_no_mangle_fns`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+warning: lint `private_no_mangle_statics` has been removed: no longer a warning, `#[no_mangle]` statics always exported
+   |
+   = note: requested on the command line with `-F private_no_mangle_statics`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 2 previous errors; 8 warnings emitted
 
diff --git a/tests/ui/lint/lint-unknown-lint-cmdline-deny.stderr b/tests/ui/lint/lint-unknown-lint-cmdline-deny.stderr
index f12ce03ddfc..1ce55706d76 100644
--- a/tests/ui/lint/lint-unknown-lint-cmdline-deny.stderr
+++ b/tests/ui/lint/lint-unknown-lint-cmdline-deny.stderr
@@ -30,6 +30,17 @@ error[E0602]: unknown lint: `dead_cod`
    = note: requested on the command line with `-D dead_cod`
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
-error: aborting due to 6 previous errors
+error[E0602]: unknown lint: `bogus`
+   |
+   = note: requested on the command line with `-D bogus`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error[E0602]: unknown lint: `dead_cod`
+   |
+   = help: did you mean: `dead_code`
+   = note: requested on the command line with `-D dead_cod`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 8 previous errors
 
 For more information about this error, try `rustc --explain E0602`.
diff --git a/tests/ui/lint/lint-unknown-lint-cmdline.stderr b/tests/ui/lint/lint-unknown-lint-cmdline.stderr
index f452fc9eb94..4e0c5dbcb07 100644
--- a/tests/ui/lint/lint-unknown-lint-cmdline.stderr
+++ b/tests/ui/lint/lint-unknown-lint-cmdline.stderr
@@ -30,6 +30,17 @@ warning[E0602]: unknown lint: `dead_cod`
    = note: requested on the command line with `-D dead_cod`
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
-warning: 6 warnings emitted
+warning[E0602]: unknown lint: `bogus`
+   |
+   = note: requested on the command line with `-D bogus`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+warning[E0602]: unknown lint: `dead_cod`
+   |
+   = help: did you mean: `dead_code`
+   = note: requested on the command line with `-D dead_cod`
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+warning: 8 warnings emitted
 
 For more information about this error, try `rustc --explain E0602`.
diff --git a/tests/ui/lint/reasons-erroneous.rs b/tests/ui/lint/reasons-erroneous.rs
index 7366a03232f..244b376b60d 100644
--- a/tests/ui/lint/reasons-erroneous.rs
+++ b/tests/ui/lint/reasons-erroneous.rs
@@ -1,7 +1,5 @@
 //@ compile-flags: -Zdeduplicate-diagnostics=yes
 
-#![feature(lint_reasons)]
-
 #![warn(absolute_paths_not_starting_with_crate, reason = 0)]
 //~^ ERROR malformed lint attribute
 //~| NOTE reason must be a string literal
diff --git a/tests/ui/lint/reasons-erroneous.stderr b/tests/ui/lint/reasons-erroneous.stderr
index 003da567370..adc97174b99 100644
--- a/tests/ui/lint/reasons-erroneous.stderr
+++ b/tests/ui/lint/reasons-erroneous.stderr
@@ -1,47 +1,47 @@
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:5:58
+  --> $DIR/reasons-erroneous.rs:3:58
    |
 LL | #![warn(absolute_paths_not_starting_with_crate, reason = 0)]
    |                                                          ^ reason must be a string literal
 
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:8:40
+  --> $DIR/reasons-erroneous.rs:6:40
    |
 LL | #![warn(anonymous_parameters, reason = b"consider these, for we have condemned them")]
    |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reason must be a string literal
 
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:11:29
+  --> $DIR/reasons-erroneous.rs:9:29
    |
 LL | #![warn(bare_trait_objects, reasons = "leaders to no sure land, guides their bearings lost")]
    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bad attribute argument
 
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:14:23
+  --> $DIR/reasons-erroneous.rs:12:23
    |
 LL | #![warn(box_pointers, blerp = "or in league with robbers have reversed the signposts")]
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bad attribute argument
 
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:17:36
+  --> $DIR/reasons-erroneous.rs:15:36
    |
 LL | #![warn(elided_lifetimes_in_paths, reason("disrespectful to ancestors", "irresponsible to heirs"))]
    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bad attribute argument
 
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:20:44
+  --> $DIR/reasons-erroneous.rs:18:44
    |
 LL | #![warn(ellipsis_inclusive_range_patterns, reason = "born barren", reason = "a freak growth")]
    |                                            ^^^^^^^^^^^^^^^^^^^^^^ reason in lint attribute must come last
 
 error[E0452]: malformed lint attribute input
-  --> $DIR/reasons-erroneous.rs:23:25
+  --> $DIR/reasons-erroneous.rs:21:25
    |
 LL | #![warn(keyword_idents, reason = "root in rubble", macro_use_extern_crate)]
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^ reason in lint attribute must come last
 
 warning: unknown lint: `reason`
-  --> $DIR/reasons-erroneous.rs:26:39
+  --> $DIR/reasons-erroneous.rs:24:39
    |
 LL | #![warn(missing_copy_implementations, reason)]
    |                                       ^^^^^^
diff --git a/tests/ui/lint/reasons-forbidden.rs b/tests/ui/lint/reasons-forbidden.rs
index 0b08e7571db..47a1454e714 100644
--- a/tests/ui/lint/reasons-forbidden.rs
+++ b/tests/ui/lint/reasons-forbidden.rs
@@ -1,5 +1,3 @@
-#![feature(lint_reasons)]
-
 // If you turn off deduplicate diagnostics (which rustc turns on by default but
 // compiletest turns off when it runs ui tests), then the errors are
 // (unfortunately) repeated here because the checking is done as we read in the
diff --git a/tests/ui/lint/reasons-forbidden.stderr b/tests/ui/lint/reasons-forbidden.stderr
index ab6f19a019d..cecc8345079 100644
--- a/tests/ui/lint/reasons-forbidden.stderr
+++ b/tests/ui/lint/reasons-forbidden.stderr
@@ -1,5 +1,5 @@
 error[E0453]: allow(unsafe_code) incompatible with previous forbid
-  --> $DIR/reasons-forbidden.rs:25:13
+  --> $DIR/reasons-forbidden.rs:23:13
    |
 LL |     unsafe_code,
    |     ----------- `forbid` level set here
@@ -10,7 +10,7 @@ LL |     #[allow(unsafe_code)]
    = note: our errors & omissions insurance policy doesn't cover unsafe Rust
 
 error: usage of an `unsafe` block
-  --> $DIR/reasons-forbidden.rs:29:5
+  --> $DIR/reasons-forbidden.rs:27:5
    |
 LL | /     unsafe {
 LL | |
@@ -21,7 +21,7 @@ LL | |     }
    |
    = note: our errors & omissions insurance policy doesn't cover unsafe Rust
 note: the lint level is defined here
-  --> $DIR/reasons-forbidden.rs:14:5
+  --> $DIR/reasons-forbidden.rs:12:5
    |
 LL |     unsafe_code,
    |     ^^^^^^^^^^^
diff --git a/tests/ui/lint/reasons.rs b/tests/ui/lint/reasons.rs
index 4c2f92af1c7..917e7539aae 100644
--- a/tests/ui/lint/reasons.rs
+++ b/tests/ui/lint/reasons.rs
@@ -1,6 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
 #![warn(elided_lifetimes_in_paths,
         //~^ NOTE the lint level is defined here
         reason = "explicit anonymous lifetimes aid reasoning about ownership")]
diff --git a/tests/ui/lint/reasons.stderr b/tests/ui/lint/reasons.stderr
index cd8412153f1..8028785ab94 100644
--- a/tests/ui/lint/reasons.stderr
+++ b/tests/ui/lint/reasons.stderr
@@ -1,5 +1,5 @@
 warning: hidden lifetime parameters in types are deprecated
-  --> $DIR/reasons.rs:20:34
+  --> $DIR/reasons.rs:19:34
    |
 LL |     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
    |                             -----^^^^^^^^^
@@ -8,7 +8,7 @@ LL |     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
    |
    = note: explicit anonymous lifetimes aid reasoning about ownership
 note: the lint level is defined here
-  --> $DIR/reasons.rs:4:9
+  --> $DIR/reasons.rs:3:9
    |
 LL | #![warn(elided_lifetimes_in_paths,
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -18,7 +18,7 @@ LL |     fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
    |                                           ++++
 
 warning: variable `Social_exchange_psychology` should have a snake case name
-  --> $DIR/reasons.rs:30:9
+  --> $DIR/reasons.rs:29:9
    |
 LL |     let Social_exchange_psychology = CheaterDetectionMechanism {};
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `social_exchange_psychology`
@@ -26,7 +26,7 @@ LL |     let Social_exchange_psychology = CheaterDetectionMechanism {};
    = note: people shouldn't have to change their usual style habits
            to contribute to our project
 note: the lint level is defined here
-  --> $DIR/reasons.rs:8:5
+  --> $DIR/reasons.rs:7:5
    |
 LL |     nonstandard_style,
    |     ^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs b/tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs
index e94755618cf..1322d2d5e89 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/avoid_delayed_good_path_ice.rs
@@ -1,5 +1,4 @@
 //@ check-pass
-#![feature(lint_reasons)]
 
 #[expect(drop_bounds)]
 fn trigger_rustc_lints<T: Drop>() {
diff --git a/tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs b/tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs
index ce4b89f5d99..3b702dbd1cc 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/catch_multiple_lint_triggers.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 #![warn(unused)]
 
 // This expect attribute should catch all lint triggers
diff --git a/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs b/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs
index 8f255065125..0a39674144c 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 #![warn(unused)]
 
 #![expect(unused_mut)]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr b/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr
index 7237f6fb6bb..90a2c54b582 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/crate_level_expect.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/crate_level_expect.rs:7:11
+  --> $DIR/crate_level_expect.rs:5:11
    |
 LL | #![expect(unused_mut)]
    |           ^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs
index 7bfb84c8826..3a3cef2d00d 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_macro.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 #![warn(unused)]
 
 macro_rules! expect_inside_macro {
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs
index e6f7471b93c..549f031cbf6 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 #![warn(unused_variables)]
 
 macro_rules! trigger_unused_variables_macro {
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr
index 817e16fdcaa..49dba1c7ffe 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_lint_from_macro.stderr
@@ -1,5 +1,5 @@
 warning: unused variable: `x`
-  --> $DIR/expect_lint_from_macro.rs:9:13
+  --> $DIR/expect_lint_from_macro.rs:7:13
    |
 LL |         let x = 0;
    |             ^ help: if this is intentional, prefix it with an underscore: `_x`
@@ -8,14 +8,14 @@ LL |     trigger_unused_variables_macro!();
    |     --------------------------------- in this macro invocation
    |
 note: the lint level is defined here
-  --> $DIR/expect_lint_from_macro.rs:5:9
+  --> $DIR/expect_lint_from_macro.rs:3:9
    |
 LL | #![warn(unused_variables)]
    |         ^^^^^^^^^^^^^^^^
    = note: this warning originates in the macro `trigger_unused_variables_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 warning: unused variable: `x`
-  --> $DIR/expect_lint_from_macro.rs:9:13
+  --> $DIR/expect_lint_from_macro.rs:7:13
    |
 LL |         let x = 0;
    |             ^ help: if this is intentional, prefix it with an underscore: `_x`
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs
deleted file mode 100644
index 928e1610614..00000000000
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// should error due to missing feature gate.
-
-#![warn(unused)]
-
-#[expect(unused)]
-//~^ ERROR: the `#[expect]` attribute is an experimental feature [E0658]
-fn main() {
-    let x = 1;
-}
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr
deleted file mode 100644
index 5d252fdcf5d..00000000000
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr
+++ /dev/null
@@ -1,13 +0,0 @@
-error[E0658]: the `#[expect]` attribute is an experimental feature
-  --> $DIR/expect_missing_feature_gate.rs:5:1
-   |
-LL | #[expect(unused)]
-   | ^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #54503 <https://github.com/rust-lang/rust/issues/54503> for more information
-   = help: add `#![feature(lint_reasons)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error: aborting due to 1 previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs
index 1534d5f862c..5d80a7ca046 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 #![warn(unused)]
 
 // The warnings are not double triggers, they identify different unfulfilled lint
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr
index 90ee744b26b..c551c55fbed 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_multiple_lints.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:10:28
+  --> $DIR/expect_multiple_lints.rs:8:28
    |
 LL | #[expect(unused_variables, unused_mut, while_true)]
    |                            ^^^^^^^^^^
@@ -7,43 +7,43 @@ LL | #[expect(unused_variables, unused_mut, while_true)]
    = note: `#[warn(unfulfilled_lint_expectations)]` on by default
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:10:40
+  --> $DIR/expect_multiple_lints.rs:8:40
    |
 LL | #[expect(unused_variables, unused_mut, while_true)]
    |                                        ^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:19:10
+  --> $DIR/expect_multiple_lints.rs:17:10
    |
 LL | #[expect(unused_variables, unused_mut, while_true)]
    |          ^^^^^^^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:19:40
+  --> $DIR/expect_multiple_lints.rs:17:40
    |
 LL | #[expect(unused_variables, unused_mut, while_true)]
    |                                        ^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:28:10
+  --> $DIR/expect_multiple_lints.rs:26:10
    |
 LL | #[expect(unused_variables, unused_mut, while_true)]
    |          ^^^^^^^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:28:28
+  --> $DIR/expect_multiple_lints.rs:26:28
    |
 LL | #[expect(unused_variables, unused_mut, while_true)]
    |                            ^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:36:18
+  --> $DIR/expect_multiple_lints.rs:34:18
    |
 LL | #[expect(unused, while_true)]
    |                  ^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_multiple_lints.rs:45:10
+  --> $DIR/expect_multiple_lints.rs:43:10
    |
 LL | #[expect(unused, while_true)]
    |          ^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs
index 8f94bd6ec6c..1d365363ceb 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs
@@ -1,6 +1,5 @@
 // ignore-tidy-linelength
 
-#![feature(lint_reasons)]
 #![warn(unused_mut)]
 
 #[expect(
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr
index 0e445d2439b..02710d9f2af 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr
@@ -1,5 +1,5 @@
 warning: variable does not need to be mutable
-  --> $DIR/expect_nested_lint_levels.rs:36:13
+  --> $DIR/expect_nested_lint_levels.rs:35:13
    |
 LL |         let mut v = 0;
    |             ----^
@@ -8,25 +8,25 @@ LL |         let mut v = 0;
    |
    = note: this overrides the previous `expect` lint level and warns about the `unused_mut` lint here
 note: the lint level is defined here
-  --> $DIR/expect_nested_lint_levels.rs:31:9
+  --> $DIR/expect_nested_lint_levels.rs:30:9
    |
 LL |         unused_mut,
    |         ^^^^^^^^^^
 
 error: unused variable: `this_is_my_function`
-  --> $DIR/expect_nested_lint_levels.rs:48:9
+  --> $DIR/expect_nested_lint_levels.rs:47:9
    |
 LL |     let this_is_my_function = 3;
    |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_is_my_function`
    |
 note: the lint level is defined here
-  --> $DIR/expect_nested_lint_levels.rs:45:10
+  --> $DIR/expect_nested_lint_levels.rs:44:10
    |
 LL | #[forbid(unused_variables)]
    |          ^^^^^^^^^^^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_nested_lint_levels.rs:7:5
+  --> $DIR/expect_nested_lint_levels.rs:6:5
    |
 LL |     unused_mut,
    |     ^^^^^^^^^^
@@ -35,7 +35,7 @@ LL |     unused_mut,
    = note: `#[warn(unfulfilled_lint_expectations)]` on by default
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_nested_lint_levels.rs:24:5
+  --> $DIR/expect_nested_lint_levels.rs:23:5
    |
 LL |     unused_mut,
    |     ^^^^^^^^^^
@@ -43,7 +43,7 @@ LL |     unused_mut,
    = note: this `expect` is overridden by a `warn` attribute before the `unused_mut` lint is triggered
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_nested_lint_levels.rs:43:10
+  --> $DIR/expect_nested_lint_levels.rs:42:10
    |
 LL | #[expect(unused_variables)]
    |          ^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs
index d066a2b6ba6..bdea0fa1ce0 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.rs
@@ -1,5 +1,4 @@
 //@ check-pass
-#![feature(lint_reasons)]
 
 #[warn(unused_variables)]
 
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr
index 69f7cda08ef..14e78ddd305 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_on_fn_params.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_on_fn_params.rs:9:43
+  --> $DIR/expect_on_fn_params.rs:8:43
    |
 LL | fn check_unfulfilled_expectation(#[expect(unused_variables)] used_value: u32) {
    |                                           ^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs
index 7a57ab0f981..c99317d6aa8 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.rs
@@ -1,5 +1,4 @@
 //@ check-pass
-#![feature(lint_reasons)]
 
 //! This file tests the `#[expect]` attribute implementation for tool lints. The same
 //! file is used to test clippy and rustdoc. Any changes to this file should be synced
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr
index efe1aa04e5e..cd6dae0d761 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_tool_lint_rfc_2383.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_tool_lint_rfc_2383.rs:33:14
+  --> $DIR/expect_tool_lint_rfc_2383.rs:32:14
    |
 LL |     #[expect(dead_code)]
    |              ^^^^^^^^^
@@ -7,7 +7,7 @@ LL |     #[expect(dead_code)]
    = note: `#[warn(unfulfilled_lint_expectations)]` on by default
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_tool_lint_rfc_2383.rs:39:18
+  --> $DIR/expect_tool_lint_rfc_2383.rs:38:18
    |
 LL |         #[expect(invalid_nan_comparisons)]
    |                  ^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs
index 577c6855fbe..413833ba351 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.rs
@@ -1,7 +1,6 @@
 //@ check-pass
 // ignore-tidy-linelength
 
-#![feature(lint_reasons)]
 #![warn(unused_mut)]
 
 #![expect(unfulfilled_lint_expectations, reason = "idk why you would expect this")]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr
index 9a1c3e442bb..bd2df362a77 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_unfulfilled_expectation.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_unfulfilled_expectation.rs:7:11
+  --> $DIR/expect_unfulfilled_expectation.rs:6:11
    |
 LL | #![expect(unfulfilled_lint_expectations, reason = "idk why you would expect this")]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -9,7 +9,7 @@ LL | #![expect(unfulfilled_lint_expectations, reason = "idk why you would expect
    = note: `#[warn(unfulfilled_lint_expectations)]` on by default
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_unfulfilled_expectation.rs:13:10
+  --> $DIR/expect_unfulfilled_expectation.rs:12:10
    |
 LL | #[expect(unfulfilled_lint_expectations, reason = "a local: idk why you would expect this")]
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -18,7 +18,7 @@ LL | #[expect(unfulfilled_lint_expectations, reason = "a local: idk why you woul
    = note: the `unfulfilled_lint_expectations` lint can't be expected and will always produce this message
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_unfulfilled_expectation.rs:18:14
+  --> $DIR/expect_unfulfilled_expectation.rs:17:14
    |
 LL |     #[expect(unused_mut, reason = "this expectation will create a diagnostic with the default lint level")]
    |              ^^^^^^^^^^
@@ -26,7 +26,7 @@ LL |     #[expect(unused_mut, reason = "this expectation will create a diagnosti
    = note: this expectation will create a diagnostic with the default lint level
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_unfulfilled_expectation.rs:25:22
+  --> $DIR/expect_unfulfilled_expectation.rs:24:22
    |
 LL |     #[expect(unused, unfulfilled_lint_expectations, reason = "the expectation for `unused` should be fulfilled")]
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_unused_inside_impl_block.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_unused_inside_impl_block.rs
index 44a715e4cdc..0ba63aa7bf8 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_unused_inside_impl_block.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_unused_inside_impl_block.rs
@@ -1,7 +1,6 @@
 //@ check-pass
 //@ incremental
 
-#![feature(lint_reasons)]
 #![warn(unused)]
 
 struct OneUnused;
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs
index 7c0ecd19010..9e06140f80c 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.rs
@@ -1,7 +1,5 @@
 //@ compile-flags: -Zdeduplicate-diagnostics=yes
 
-#![feature(lint_reasons)]
-
 #[forbid(unused_variables)]
 //~^ NOTE `forbid` level set here
 #[expect(unused_variables)]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr
index 0f42ffbdea3..e6d7896ddd4 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_with_forbid.stderr
@@ -1,5 +1,5 @@
 error[E0453]: expect(unused_variables) incompatible with previous forbid
-  --> $DIR/expect_with_forbid.rs:7:10
+  --> $DIR/expect_with_forbid.rs:5:10
    |
 LL | #[forbid(unused_variables)]
    |          ---------------- `forbid` level set here
@@ -8,7 +8,7 @@ LL | #[expect(unused_variables)]
    |          ^^^^^^^^^^^^^^^^ overruled by previous forbid
 
 error[E0453]: expect(while_true) incompatible with previous forbid
-  --> $DIR/expect_with_forbid.rs:15:10
+  --> $DIR/expect_with_forbid.rs:13:10
    |
 LL | #[forbid(while_true)]
    |          ---------- `forbid` level set here
@@ -17,13 +17,13 @@ LL | #[expect(while_true)]
    |          ^^^^^^^^^^ overruled by previous forbid
 
 error: denote infinite loops with `loop { ... }`
-  --> $DIR/expect_with_forbid.rs:22:5
+  --> $DIR/expect_with_forbid.rs:20:5
    |
 LL |     while true {}
    |     ^^^^^^^^^^ help: use `loop`
    |
 note: the lint level is defined here
-  --> $DIR/expect_with_forbid.rs:12:10
+  --> $DIR/expect_with_forbid.rs:10:10
    |
 LL | #[forbid(while_true)]
    |          ^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs
index 29e60a265da..482c8134a83 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.rs
@@ -1,6 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
 #![warn(unused)]
 
 #![expect(unused_variables, reason = "<This should fail and display this reason>")]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr
index e349e4081f8..644f3fa7906 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_with_reason.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/expect_with_reason.rs:6:11
+  --> $DIR/expect_with_reason.rs:5:11
    |
 LL | #![expect(unused_variables, reason = "<This should fail and display this reason>")]
    |           ^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs
index efe921b76af..ad85a777ef9 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.rs
@@ -3,8 +3,6 @@
 //@ compile-flags: --force-warn unused_mut
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 fn expect_early_pass_lint() {
     #[expect(while_true)]
     while true {
diff --git a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr
index 169f03aed94..29e579464c8 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_fulfilled.stderr
@@ -1,5 +1,5 @@
 warning: unused variable: `x`
-  --> $DIR/force_warn_expected_lints_fulfilled.rs:20:9
+  --> $DIR/force_warn_expected_lints_fulfilled.rs:18:9
    |
 LL |     let x = 2;
    |         ^ help: if this is intentional, prefix it with an underscore: `_x`
@@ -7,13 +7,13 @@ LL |     let x = 2;
    = note: requested on the command line with `--force-warn unused-variables`
 
 warning: unused variable: `fox_name`
-  --> $DIR/force_warn_expected_lints_fulfilled.rs:28:9
+  --> $DIR/force_warn_expected_lints_fulfilled.rs:26:9
    |
 LL |     let fox_name = "Sir Nibbles";
    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fox_name`
 
 warning: variable does not need to be mutable
-  --> $DIR/force_warn_expected_lints_fulfilled.rs:32:9
+  --> $DIR/force_warn_expected_lints_fulfilled.rs:30:9
    |
 LL |     let mut what_does_the_fox_say = "*ding* *deng* *dung*";
    |         ----^^^^^^^^^^^^^^^^^^^^^
@@ -23,13 +23,13 @@ LL |     let mut what_does_the_fox_say = "*ding* *deng* *dung*";
    = note: requested on the command line with `--force-warn unused-mut`
 
 warning: unused variable: `this_should_fulfill_the_expectation`
-  --> $DIR/force_warn_expected_lints_fulfilled.rs:43:9
+  --> $DIR/force_warn_expected_lints_fulfilled.rs:41:9
    |
 LL |     let this_should_fulfill_the_expectation = "The `#[allow]` has no power here";
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_should_fulfill_the_expectation`
 
 warning: denote infinite loops with `loop { ... }`
-  --> $DIR/force_warn_expected_lints_fulfilled.rs:10:5
+  --> $DIR/force_warn_expected_lints_fulfilled.rs:8:5
    |
 LL |     while true {
    |     ^^^^^^^^^^ help: use `loop`
diff --git a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs
index 2751f5d8303..a43c75c3455 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.rs
@@ -3,8 +3,6 @@
 //@ compile-flags: --force-warn unused_mut
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 fn expect_early_pass_lint(terminate: bool) {
     #[expect(while_true)]
     //~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr
index c74fabe27dc..f5e66694b8e 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/force_warn_expected_lints_unfulfilled.stderr
@@ -1,5 +1,5 @@
 warning: unused variable: `this_should_not_fulfill_the_expectation`
-  --> $DIR/force_warn_expected_lints_unfulfilled.rs:40:9
+  --> $DIR/force_warn_expected_lints_unfulfilled.rs:38:9
    |
 LL |     let this_should_not_fulfill_the_expectation = "maybe";
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_should_not_fulfill_the_expectation`
@@ -7,7 +7,7 @@ LL |     let this_should_not_fulfill_the_expectation = "maybe";
    = note: requested on the command line with `--force-warn unused-variables`
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/force_warn_expected_lints_unfulfilled.rs:9:14
+  --> $DIR/force_warn_expected_lints_unfulfilled.rs:7:14
    |
 LL |     #[expect(while_true)]
    |              ^^^^^^^^^^
@@ -15,7 +15,7 @@ LL |     #[expect(while_true)]
    = note: `#[warn(unfulfilled_lint_expectations)]` on by default
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/force_warn_expected_lints_unfulfilled.rs:17:10
+  --> $DIR/force_warn_expected_lints_unfulfilled.rs:15:10
    |
 LL | #[expect(unused_variables, reason="<this should fail and display this reason>")]
    |          ^^^^^^^^^^^^^^^^
@@ -23,13 +23,13 @@ LL | #[expect(unused_variables, reason="<this should fail and display this reaso
    = note: <this should fail and display this reason>
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/force_warn_expected_lints_unfulfilled.rs:24:10
+  --> $DIR/force_warn_expected_lints_unfulfilled.rs:22:10
    |
 LL | #[expect(unused)]
    |          ^^^^^^
 
 warning: this lint expectation is unfulfilled
-  --> $DIR/force_warn_expected_lints_unfulfilled.rs:36:10
+  --> $DIR/force_warn_expected_lints_unfulfilled.rs:34:10
    |
 LL | #[expect(unused)]
    |          ^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs b/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs
index 545939b1369..078c3a59eb3 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_early_lints.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
-
 fn expect_early_pass_lints() {
     #[expect(while_true)]
     while true {
diff --git a/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs b/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs
index 9431655c41d..4e2377a2dc3 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs
@@ -1,6 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
 #![warn(unused)]
 
 #[expect(unused_variables)]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs b/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs
index bafdea96e08..a7767769344 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.rs
@@ -1,5 +1,3 @@
-#![feature(lint_reasons)]
-
 #![deny(unused_attributes)]
 
 #[allow(reason = "I want to allow something")]//~ ERROR unused attribute
diff --git a/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr b/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr
index 3e9d70821b5..7f01c2dc61b 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/lint-attribute-only-with-reason.stderr
@@ -1,18 +1,18 @@
 error: unused attribute
-  --> $DIR/lint-attribute-only-with-reason.rs:5:1
+  --> $DIR/lint-attribute-only-with-reason.rs:3:1
    |
 LL | #[allow(reason = "I want to allow something")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
    |
    = note: attribute `allow` without any lints has no effect
 note: the lint level is defined here
-  --> $DIR/lint-attribute-only-with-reason.rs:3:9
+  --> $DIR/lint-attribute-only-with-reason.rs:1:9
    |
 LL | #![deny(unused_attributes)]
    |         ^^^^^^^^^^^^^^^^^
 
 error: unused attribute
-  --> $DIR/lint-attribute-only-with-reason.rs:6:1
+  --> $DIR/lint-attribute-only-with-reason.rs:4:1
    |
 LL | #[expect(reason = "I don't know what I'm waiting for")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
@@ -20,7 +20,7 @@ LL | #[expect(reason = "I don't know what I'm waiting for")]
    = note: attribute `expect` without any lints has no effect
 
 error: unused attribute
-  --> $DIR/lint-attribute-only-with-reason.rs:7:1
+  --> $DIR/lint-attribute-only-with-reason.rs:5:1
    |
 LL | #[warn(reason = "This should be warn by default")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
@@ -28,7 +28,7 @@ LL | #[warn(reason = "This should be warn by default")]
    = note: attribute `warn` without any lints has no effect
 
 error: unused attribute
-  --> $DIR/lint-attribute-only-with-reason.rs:8:1
+  --> $DIR/lint-attribute-only-with-reason.rs:6:1
    |
 LL | #[deny(reason = "All listed lints are denied")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
@@ -36,7 +36,7 @@ LL | #[deny(reason = "All listed lints are denied")]
    = note: attribute `deny` without any lints has no effect
 
 error: unused attribute
-  --> $DIR/lint-attribute-only-with-reason.rs:9:1
+  --> $DIR/lint-attribute-only-with-reason.rs:7:1
    |
 LL | #[forbid(reason = "Just some reason")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
diff --git a/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs b/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs
index f02dfdcea30..8930f1cd3b9 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.rs
@@ -1,6 +1,5 @@
 //@ check-pass
 
-#![feature(lint_reasons)]
 #![warn(unused)]
 
 #[warn(unused_variables)]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr b/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr
index df7d6584f99..31042c4bb6d 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/multiple_expect_attrs.stderr
@@ -1,5 +1,5 @@
 warning: this lint expectation is unfulfilled
-  --> $DIR/multiple_expect_attrs.rs:7:10
+  --> $DIR/multiple_expect_attrs.rs:6:10
    |
 LL | #[expect(unused_variables)]
    |          ^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs b/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs
index 61333519384..9e38b94b76c 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.rs
@@ -2,8 +2,6 @@
 //@ check-pass
 //@ compile-flags: -Z unpretty=expanded
 
-#![feature(lint_reasons)]
-
 // This `expect` will create an expectation with an unstable expectation id
 #[expect(while_true)]
 fn create_early_lint_pass_expectation() {
diff --git a/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout b/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout
index 6a6b4dcff92..d804c1d2d20 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout
+++ b/tests/ui/lint/rfc-2383-lint-reason/no_ice_for_partial_compiler_runs.stdout
@@ -1,14 +1,12 @@
 #![feature(prelude_import)]
 #![no_std]
-// This ensures that ICEs like rust#94953 don't happen
-//@ check-pass
-//@ compile-flags: -Z unpretty=expanded
-
-#![feature(lint_reasons)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
 #[macro_use]
 extern crate std;
+// This ensures that ICEs like rust#94953 don't happen
+//@ check-pass
+//@ compile-flags: -Z unpretty=expanded
 
 // This `expect` will create an expectation with an unstable expectation id
 #[expect(while_true)]
diff --git a/tests/ui/lint/rfc-2383-lint-reason/root-attribute-confusion.rs b/tests/ui/lint/rfc-2383-lint-reason/root-attribute-confusion.rs
index 7b60b55eb61..f83066c138f 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/root-attribute-confusion.rs
+++ b/tests/ui/lint/rfc-2383-lint-reason/root-attribute-confusion.rs
@@ -2,6 +2,5 @@
 //@ compile-flags: -Dunused_attributes
 
 #![deny(unused_crate_dependencies)]
-#![feature(lint_reasons)]
 
 fn main() {}
diff --git a/tests/ui/target-feature/no-llvm-leaks.rs b/tests/ui/target-feature/no-llvm-leaks.rs
index 73cec0a4496..9f5dec4447f 100644
--- a/tests/ui/target-feature/no-llvm-leaks.rs
+++ b/tests/ui/target-feature/no-llvm-leaks.rs
@@ -6,7 +6,7 @@
 //@ build-pass
 #![no_core]
 #![crate_type = "rlib"]
-#![feature(intrinsics, rustc_attrs, no_core, lang_items, staged_api, lint_reasons)]
+#![feature(intrinsics, rustc_attrs, no_core, lang_items, staged_api)]
 #![stable(feature = "test", since = "1.0.0")]
 
 // Supporting minimal rust core code