about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-03-05 18:23:01 +0000
committerMichael Goulet <michael@errs.io>2024-03-08 20:56:25 +0000
commitc63f3feb0fcde0d59004f30ab8f8d2f38da74754 (patch)
tree19efd92b3e468d6e8daad87148b01e1fbda09430
parenta655e648a9f94d74263108366b83e677af56e35d (diff)
downloadrust-c63f3feb0fcde0d59004f30ab8f8d2f38da74754.tar.gz
rust-c63f3feb0fcde0d59004f30ab8f8d2f38da74754.zip
Stabilize associated type bounds
-rw-r--r--compiler/rustc_ast/src/lib.rs2
-rw-r--r--compiler/rustc_ast_passes/src/feature_gate.rs8
-rw-r--r--compiler/rustc_borrowck/src/lib.rs2
-rw-r--r--compiler/rustc_codegen_gcc/src/lib.rs2
-rw-r--r--compiler/rustc_codegen_ssa/src/lib.rs2
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0719.md4
-rw-r--r--compiler/rustc_expand/src/lib.rs2
-rw-r--r--compiler/rustc_feature/src/accepted.rs2
-rw-r--r--compiler/rustc_feature/src/unstable.rs2
-rw-r--r--compiler/rustc_infer/src/lib.rs2
-rw-r--r--compiler/rustc_middle/src/lib.rs2
-rw-r--r--compiler/rustc_mir_build/src/lib.rs2
-rw-r--r--compiler/rustc_parse/src/parser/path.rs2
-rw-r--r--compiler/rustc_serialize/src/lib.rs2
-rw-r--r--compiler/rustc_trait_selection/src/lib.rs2
-rw-r--r--compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs3
-rw-r--r--library/alloc/src/lib.rs2
-rw-r--r--library/alloc/tests/lib.rs2
-rw-r--r--library/core/src/lib.rs2
-rw-r--r--tests/rustdoc-ui/issues/issue-110900.rs1
-rw-r--r--tests/ui/associated-consts/issue-93835.rs1
-rw-r--r--tests/ui/associated-consts/issue-93835.stderr12
-rw-r--r--tests/ui/associated-type-bounds/ambiguous-associated-type.rs2
-rw-r--r--tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs2
-rw-r--r--tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr2
-rw-r--r--tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs2
-rw-r--r--tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.rs2
-rw-r--r--tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.stderr2
-rw-r--r--tests/ui/associated-type-bounds/bad-universal-in-impl-sig.rs2
-rw-r--r--tests/ui/associated-type-bounds/bad-universal-in-impl-sig.stderr2
-rw-r--r--tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs2
-rw-r--r--tests/ui/associated-type-bounds/consts.rs2
-rw-r--r--tests/ui/associated-type-bounds/consts.stderr4
-rw-r--r--tests/ui/associated-type-bounds/duplicate.rs1
-rw-r--r--tests/ui/associated-type-bounds/duplicate.stderr144
-rw-r--r--tests/ui/associated-type-bounds/elision.rs1
-rw-r--r--tests/ui/associated-type-bounds/elision.stderr4
-rw-r--r--tests/ui/associated-type-bounds/entails-sized-object-safety.rs2
-rw-r--r--tests/ui/associated-type-bounds/enum-bounds.rs1
-rw-r--r--tests/ui/associated-type-bounds/fn-apit.rs2
-rw-r--r--tests/ui/associated-type-bounds/fn-aux.rs2
-rw-r--r--tests/ui/associated-type-bounds/fn-inline.rs2
-rw-r--r--tests/ui/associated-type-bounds/fn-where.rs2
-rw-r--r--tests/ui/associated-type-bounds/fn-wrap-apit.rs1
-rw-r--r--tests/ui/associated-type-bounds/higher-ranked.rs2
-rw-r--r--tests/ui/associated-type-bounds/hrtb.rs2
-rw-r--r--tests/ui/associated-type-bounds/implied-bounds-cycle.rs2
-rw-r--r--tests/ui/associated-type-bounds/implied-bounds-cycle.stderr4
-rw-r--r--tests/ui/associated-type-bounds/implied-in-supertrait.rs2
-rw-r--r--tests/ui/associated-type-bounds/implied-region-constraints.rs2
-rw-r--r--tests/ui/associated-type-bounds/implied-region-constraints.stderr4
-rw-r--r--tests/ui/associated-type-bounds/inside-adt.rs2
-rw-r--r--tests/ui/associated-type-bounds/inside-adt.stderr18
-rw-r--r--tests/ui/associated-type-bounds/issue-104916.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-104916.stderr2
-rw-r--r--tests/ui/associated-type-bounds/issue-61752.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-70292.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-71443-1.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-71443-1.stderr2
-rw-r--r--tests/ui/associated-type-bounds/issue-71443-2.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-79949.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-81193.rs2
-rw-r--r--tests/ui/associated-type-bounds/issue-83017.rs2
-rw-r--r--tests/ui/associated-type-bounds/nested-bounds-dont-eliminate-alias-bounds.rs2
-rw-r--r--tests/ui/associated-type-bounds/no-gat-position.rs2
-rw-r--r--tests/ui/associated-type-bounds/no-gat-position.stderr2
-rw-r--r--tests/ui/associated-type-bounds/overlaping-bound-suggestion.rs1
-rw-r--r--tests/ui/associated-type-bounds/overlaping-bound-suggestion.stderr4
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.rs2
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.stderr27
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.rs5
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stderr13
-rw-r--r--tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stdout4
-rw-r--r--tests/ui/associated-type-bounds/rpit.rs2
-rw-r--r--tests/ui/associated-type-bounds/rpit.stderr2
-rw-r--r--tests/ui/associated-type-bounds/struct-bounds.rs2
-rw-r--r--tests/ui/associated-type-bounds/supertrait-defines-ty.rs2
-rw-r--r--tests/ui/associated-type-bounds/trait-alias-impl-trait.rs1
-rw-r--r--tests/ui/associated-type-bounds/trait-params.rs2
-rw-r--r--tests/ui/associated-type-bounds/type-alias.rs2
-rw-r--r--tests/ui/associated-type-bounds/type-alias.stderr24
-rw-r--r--tests/ui/associated-type-bounds/union-bounds.rs2
-rw-r--r--tests/ui/associated-types/issue-63591.rs1
-rw-r--r--tests/ui/feature-gates/feature-gate-associated_type_bounds.rs61
-rw-r--r--tests/ui/feature-gates/feature-gate-associated_type_bounds.stderr138
-rw-r--r--tests/ui/impl-trait/in-trait/lifetime-in-associated-trait-bound.rs2
-rw-r--r--tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs4
-rw-r--r--tests/ui/parser/constraints-before-generic-args-syntactic-pass.stderr26
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.rs1
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.stderr6
-rw-r--r--tests/ui/suggestions/missing-assoc-fn.rs2
-rw-r--r--tests/ui/suggestions/missing-assoc-fn.stderr15
-rw-r--r--tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs2
-rw-r--r--tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr14
-rw-r--r--tests/ui/traits/negative-bounds/associated-constraints.rs2
95 files changed, 147 insertions, 533 deletions
diff --git a/compiler/rustc_ast/src/lib.rs b/compiler/rustc_ast/src/lib.rs
index 6e42cf37b86..ef60a1c9b5b 100644
--- a/compiler/rustc_ast/src/lib.rs
+++ b/compiler/rustc_ast/src/lib.rs
@@ -11,7 +11,7 @@
 #![doc(rust_logo)]
 #![allow(internal_features)]
 #![feature(rustdoc_internals)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(associated_type_defaults)]
 #![feature(box_patterns)]
 #![feature(if_let_guard)]
diff --git a/compiler/rustc_ast_passes/src/feature_gate.rs b/compiler/rustc_ast_passes/src/feature_gate.rs
index 2e14238f950..0020ef79d02 100644
--- a/compiler/rustc_ast_passes/src/feature_gate.rs
+++ b/compiler/rustc_ast_passes/src/feature_gate.rs
@@ -452,13 +452,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
                     constraint.span,
                     "return type notation is experimental"
                 );
-            } else {
-                gate!(
-                    &self,
-                    associated_type_bounds,
-                    constraint.span,
-                    "associated type bounds are unstable"
-                );
             }
         }
         visit::walk_assoc_constraint(self, constraint)
@@ -604,7 +597,6 @@ pub fn check_crate(krate: &ast::Crate, sess: &Session, features: &Features) {
     }
 
     gate_all_legacy_dont_use!(trait_alias, "trait aliases are experimental");
-    gate_all_legacy_dont_use!(associated_type_bounds, "associated type bounds are unstable");
     // Despite being a new feature, `where T: Trait<Assoc(): Sized>`, which is RTN syntax now,
     // used to be gated under associated_type_bounds, which are right above, so RTN needs to
     // be too.
diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs
index 8dcfe014b65..ec89f5d4b40 100644
--- a/compiler/rustc_borrowck/src/lib.rs
+++ b/compiler/rustc_borrowck/src/lib.rs
@@ -4,7 +4,7 @@
 #![feature(rustdoc_internals)]
 #![doc(rust_logo)]
 #![feature(assert_matches)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(box_patterns)]
 #![feature(control_flow_enum)]
 #![feature(let_chains)]
diff --git a/compiler/rustc_codegen_gcc/src/lib.rs b/compiler/rustc_codegen_gcc/src/lib.rs
index 09ce059476e..0f986d554e5 100644
--- a/compiler/rustc_codegen_gcc/src/lib.rs
+++ b/compiler/rustc_codegen_gcc/src/lib.rs
@@ -18,11 +18,11 @@
 #![feature(
     rustc_private,
     decl_macro,
-    associated_type_bounds,
     never_type,
     trusted_len,
     hash_raw_entry
 )]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![allow(broken_intra_doc_links)]
 #![recursion_limit="256"]
 #![warn(rust_2018_idioms)]
diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs
index 92f0be541c0..9be8dcf166d 100644
--- a/compiler/rustc_codegen_ssa/src/lib.rs
+++ b/compiler/rustc_codegen_ssa/src/lib.rs
@@ -4,7 +4,7 @@
 #![allow(internal_features)]
 #![allow(rustc::diagnostic_outside_of_impl)]
 #![allow(rustc::untranslatable_diagnostic)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(box_patterns)]
 #![feature(if_let_guard)]
 #![feature(let_chains)]
diff --git a/compiler/rustc_error_codes/src/error_codes/E0719.md b/compiler/rustc_error_codes/src/error_codes/E0719.md
index 057a0b1645c..cd981db1058 100644
--- a/compiler/rustc_error_codes/src/error_codes/E0719.md
+++ b/compiler/rustc_error_codes/src/error_codes/E0719.md
@@ -3,8 +3,6 @@ An associated type value was specified more than once.
 Erroneous code example:
 
 ```compile_fail,E0719
-#![feature(associated_type_bounds)]
-
 trait FooTrait {}
 trait BarTrait {}
 
@@ -19,8 +17,6 @@ specify the associated type with the new trait.
 Corrected example:
 
 ```
-#![feature(associated_type_bounds)]
-
 trait FooTrait {}
 trait BarTrait {}
 trait FooBarTrait: FooTrait + BarTrait {}
diff --git a/compiler/rustc_expand/src/lib.rs b/compiler/rustc_expand/src/lib.rs
index e550f7242c3..0b8f75bc2ca 100644
--- a/compiler/rustc_expand/src/lib.rs
+++ b/compiler/rustc_expand/src/lib.rs
@@ -1,7 +1,7 @@
 #![doc(rust_logo)]
 #![feature(rustdoc_internals)]
 #![feature(array_windows)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(associated_type_defaults)]
 #![feature(if_let_guard)]
 #![feature(let_chains)]
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
index 7e5197f16f9..ceab4581fe7 100644
--- a/compiler/rustc_feature/src/accepted.rs
+++ b/compiler/rustc_feature/src/accepted.rs
@@ -59,6 +59,8 @@ declare_features! (
     (accepted, asm_sym, "1.66.0", Some(93333)),
     /// Allows the definition of associated constants in `trait` or `impl` blocks.
     (accepted, associated_consts, "1.20.0", Some(29646)),
+    /// Allows the user of associated type bounds.
+    (accepted, associated_type_bounds, "CURRENT_RUSTC_VERSION", Some(52662)),
     /// Allows using associated `type`s in `trait`s.
     (accepted, associated_types, "1.0.0", None),
     /// Allows free and inherent `async fn`s, `async` blocks, and `<expr>.await` expressions.
diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs
index a10f4b934ea..df812b53e64 100644
--- a/compiler/rustc_feature/src/unstable.rs
+++ b/compiler/rustc_feature/src/unstable.rs
@@ -351,8 +351,6 @@ declare_features! (
     (unstable, asm_unwind, "1.58.0", Some(93334)),
     /// Allows users to enforce equality of associated constants `TraitImpl<AssocConst=3>`.
     (unstable, associated_const_equality, "1.58.0", Some(92827)),
-    /// Allows the user of associated type bounds.
-    (unstable, associated_type_bounds, "1.34.0", Some(52662)),
     /// Allows associated type defaults.
     (unstable, associated_type_defaults, "1.2.0", Some(29661)),
     /// Allows `async || body` closures.
diff --git a/compiler/rustc_infer/src/lib.rs b/compiler/rustc_infer/src/lib.rs
index 029bddda1e1..3c2071be04e 100644
--- a/compiler/rustc_infer/src/lib.rs
+++ b/compiler/rustc_infer/src/lib.rs
@@ -18,7 +18,7 @@
 #![allow(internal_features)]
 #![allow(rustc::diagnostic_outside_of_impl)]
 #![allow(rustc::untranslatable_diagnostic)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(box_patterns)]
 #![feature(control_flow_enum)]
 #![feature(extend_one)]
diff --git a/compiler/rustc_middle/src/lib.rs b/compiler/rustc_middle/src/lib.rs
index c3e4a03ad16..e47668b9110 100644
--- a/compiler/rustc_middle/src/lib.rs
+++ b/compiler/rustc_middle/src/lib.rs
@@ -48,7 +48,7 @@
 #![feature(trusted_len)]
 #![feature(type_alias_impl_trait)]
 #![feature(strict_provenance)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(rustc_attrs)]
 #![feature(control_flow_enum)]
 #![feature(trait_upcasting)]
diff --git a/compiler/rustc_mir_build/src/lib.rs b/compiler/rustc_mir_build/src/lib.rs
index e3f202b7f18..b9a20cb21e9 100644
--- a/compiler/rustc_mir_build/src/lib.rs
+++ b/compiler/rustc_mir_build/src/lib.rs
@@ -5,7 +5,7 @@
 #![allow(rustc::diagnostic_outside_of_impl)]
 #![allow(rustc::untranslatable_diagnostic)]
 #![feature(assert_matches)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(box_patterns)]
 #![feature(if_let_guard)]
 #![feature(let_chains)]
diff --git a/compiler/rustc_parse/src/parser/path.rs b/compiler/rustc_parse/src/parser/path.rs
index 545db5138a3..683ff36294e 100644
--- a/compiler/rustc_parse/src/parser/path.rs
+++ b/compiler/rustc_parse/src/parser/path.rs
@@ -639,8 +639,6 @@ impl<'a> Parser<'a> {
                             && matches!(args.output, ast::FnRetTy::Default(..))
                         {
                             self.psess.gated_spans.gate(sym::return_type_notation, span);
-                        } else {
-                            self.psess.gated_spans.gate(sym::associated_type_bounds, span);
                         }
                     }
                     let constraint =
diff --git a/compiler/rustc_serialize/src/lib.rs b/compiler/rustc_serialize/src/lib.rs
index bb822c611a1..b67b7d79d97 100644
--- a/compiler/rustc_serialize/src/lib.rs
+++ b/compiler/rustc_serialize/src/lib.rs
@@ -8,7 +8,7 @@
 #![doc(rust_logo)]
 #![allow(internal_features)]
 #![feature(rustdoc_internals)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(const_option)]
 #![feature(core_intrinsics)]
 #![feature(generic_nonzero)]
diff --git a/compiler/rustc_trait_selection/src/lib.rs b/compiler/rustc_trait_selection/src/lib.rs
index fd3d62d1321..9fac0ea7715 100644
--- a/compiler/rustc_trait_selection/src/lib.rs
+++ b/compiler/rustc_trait_selection/src/lib.rs
@@ -17,7 +17,7 @@
 #![allow(rustc::diagnostic_outside_of_impl)]
 #![allow(rustc::untranslatable_diagnostic)]
 #![feature(assert_matches)]
-#![feature(associated_type_bounds)]
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(associated_type_defaults)]
 #![feature(box_patterns)]
 #![feature(control_flow_enum)]
diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs
index 1241227a5af..367c915c53d 100644
--- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs
+++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs
@@ -194,8 +194,7 @@ pub fn suggest_restriction<'tcx, G: EmissionGuarantee>(
         sugg.extend(ty_spans.into_iter().map(|s| (s, type_param_name.to_string())));
 
         // Suggest `fn foo<T: Trait>(t: T) where <T as Trait>::A: Bound`.
-        // FIXME: once `#![feature(associated_type_bounds)]` is stabilized, we should suggest
-        // `fn foo(t: impl Trait<A: Bound>)` instead.
+        // FIXME: we should suggest `fn foo(t: impl Trait<A: Bound>)` instead.
         err.multipart_suggestion(
             "introduce a type parameter with a trait bound instead of using `impl Trait`",
             sugg,
diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs
index 28695ade5bf..31cb9c9a8e2 100644
--- a/library/alloc/src/lib.rs
+++ b/library/alloc/src/lib.rs
@@ -172,12 +172,12 @@
 //
 // Language features:
 // tidy-alphabetical-start
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![cfg_attr(not(test), feature(coroutine_trait))]
 #![cfg_attr(test, feature(panic_update_hook))]
 #![cfg_attr(test, feature(test))]
 #![feature(allocator_internals)]
 #![feature(allow_internal_unstable)]
-#![feature(associated_type_bounds)]
 #![feature(c_unwind)]
 #![feature(cfg_sanitize)]
 #![feature(const_mut_refs)]
diff --git a/library/alloc/tests/lib.rs b/library/alloc/tests/lib.rs
index ed928994ad6..b4c036f1034 100644
--- a/library/alloc/tests/lib.rs
+++ b/library/alloc/tests/lib.rs
@@ -1,3 +1,4 @@
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![feature(allocator_api)]
 #![feature(alloc_layout_extra)]
 #![feature(iter_array_chunks)]
@@ -21,7 +22,6 @@
 #![feature(trusted_len)]
 #![feature(try_reserve_kind)]
 #![feature(unboxed_closures)]
-#![feature(associated_type_bounds)]
 #![feature(binary_heap_into_iter_sorted)]
 #![feature(binary_heap_drain_sorted)]
 #![feature(slice_ptr_get)]
diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs
index 0f7885769c2..d8aaac7a729 100644
--- a/library/core/src/lib.rs
+++ b/library/core/src/lib.rs
@@ -202,6 +202,7 @@
 //
 // Language features:
 // tidy-alphabetical-start
+#![cfg_attr(bootstrap, feature(associated_type_bounds))]
 #![cfg_attr(bootstrap, feature(diagnostic_namespace))]
 #![cfg_attr(bootstrap, feature(platform_intrinsics))]
 #![feature(abi_unadjusted)]
@@ -209,7 +210,6 @@
 #![feature(allow_internal_unsafe)]
 #![feature(allow_internal_unstable)]
 #![feature(asm_const)]
-#![feature(associated_type_bounds)]
 #![feature(auto_traits)]
 #![feature(c_unwind)]
 #![feature(cfg_sanitize)]
diff --git a/tests/rustdoc-ui/issues/issue-110900.rs b/tests/rustdoc-ui/issues/issue-110900.rs
index 5f90444dfd3..5a896167083 100644
--- a/tests/rustdoc-ui/issues/issue-110900.rs
+++ b/tests/rustdoc-ui/issues/issue-110900.rs
@@ -1,7 +1,6 @@
 //@ check-pass
 
 #![crate_type="lib"]
-#![feature(associated_type_bounds)]
 
 trait A<'a> {}
 trait B<'b> {}
diff --git a/tests/ui/associated-consts/issue-93835.rs b/tests/ui/associated-consts/issue-93835.rs
index b2a437fcbfb..9cc33d53f9c 100644
--- a/tests/ui/associated-consts/issue-93835.rs
+++ b/tests/ui/associated-consts/issue-93835.rs
@@ -6,7 +6,6 @@ fn e() {
     //~| ERROR cannot find value
     //~| ERROR associated const equality
     //~| ERROR cannot find trait `p` in this scope
-    //~| ERROR associated type bounds
 }
 
 fn main() {}
diff --git a/tests/ui/associated-consts/issue-93835.stderr b/tests/ui/associated-consts/issue-93835.stderr
index d3ce46f6f03..dfe78b3d1f3 100644
--- a/tests/ui/associated-consts/issue-93835.stderr
+++ b/tests/ui/associated-consts/issue-93835.stderr
@@ -26,17 +26,7 @@ LL |     type_ascribe!(p, a<p:p<e=6>>);
    = help: add `#![feature(associated_const_equality)]` 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]: associated type bounds are unstable
-  --> $DIR/issue-93835.rs:4:24
-   |
-LL |     type_ascribe!(p, a<p:p<e=6>>);
-   |                        ^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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 5 previous errors
+error: aborting due to 4 previous errors
 
 Some errors have detailed explanations: E0405, E0412, E0425, E0658.
 For more information about an error, try `rustc --explain E0405`.
diff --git a/tests/ui/associated-type-bounds/ambiguous-associated-type.rs b/tests/ui/associated-type-bounds/ambiguous-associated-type.rs
index 4e6d8b9dd0a..ff3c6f2a95d 100644
--- a/tests/ui/associated-type-bounds/ambiguous-associated-type.rs
+++ b/tests/ui/associated-type-bounds/ambiguous-associated-type.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 pub struct Flatten<I>
 where
     I: Iterator<Item: IntoIterator>,
diff --git a/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs
index 8a580e19186..ca4d1f6d920 100644
--- a/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs
+++ b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.rs
@@ -8,8 +8,6 @@
 // Additionally, as reported in https://github.com/rust-lang/rust/issues/63594,
 // we check that the spans for the error message are sane here.
 
-#![feature(associated_type_bounds)]
-
 fn main() {}
 
 trait Bar {
diff --git a/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr
index ad540909411..b1575abe571 100644
--- a/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr
+++ b/tests/ui/associated-type-bounds/assoc-type-eq-with-dyn-atb-fail.stderr
@@ -1,5 +1,5 @@
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/assoc-type-eq-with-dyn-atb-fail.rs:30:28
+  --> $DIR/assoc-type-eq-with-dyn-atb-fail.rs:28:28
    |
 LL |     type Out = Box<dyn Bar<Assoc: Copy>>;
    |                            ^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs b/tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs
index edde549bb4b..30fa51bb175 100644
--- a/tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs
+++ b/tests/ui/associated-type-bounds/bad-bounds-on-assoc-in-trait.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 use std::fmt::Debug;
 use std::iter::Once;
 
diff --git a/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.rs b/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.rs
index 81c8fe829f9..4689888719f 100644
--- a/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.rs
+++ b/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 trait B {
     type AssocType;
 }
diff --git a/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.stderr b/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.stderr
index 7d9870c72d4..5d8108f28a0 100644
--- a/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.stderr
+++ b/tests/ui/associated-type-bounds/bad-universal-in-dyn-in-where-clause.stderr
@@ -1,5 +1,5 @@
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/bad-universal-in-dyn-in-where-clause.rs:9:19
+  --> $DIR/bad-universal-in-dyn-in-where-clause.rs:7:19
    |
 LL |     dyn for<'j> B<AssocType: 'j>:,
    |                   ^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.rs b/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.rs
index f465123f34c..014550823bd 100644
--- a/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.rs
+++ b/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 trait Trait {
     type Item;
 }
diff --git a/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.stderr b/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.stderr
index 8855bd9c312..a017a601a17 100644
--- a/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.stderr
+++ b/tests/ui/associated-type-bounds/bad-universal-in-impl-sig.stderr
@@ -1,5 +1,5 @@
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/bad-universal-in-impl-sig.rs:10:16
+  --> $DIR/bad-universal-in-impl-sig.rs:8:16
    |
 LL | impl dyn Trait<Item: Trait2> {}
    |                ^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs b/tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs
index dad1f644284..f69c392a8c3 100644
--- a/tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs
+++ b/tests/ui/associated-type-bounds/bounds-on-assoc-in-trait.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 use std::fmt::Debug;
 use std::iter::Empty;
 use std::ops::Range;
diff --git a/tests/ui/associated-type-bounds/consts.rs b/tests/ui/associated-type-bounds/consts.rs
index 8f90c36ed45..17de1ff5682 100644
--- a/tests/ui/associated-type-bounds/consts.rs
+++ b/tests/ui/associated-type-bounds/consts.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 pub fn accept(_: impl Trait<K: Copy>) {}
 //~^ ERROR expected type, found constant
 
diff --git a/tests/ui/associated-type-bounds/consts.stderr b/tests/ui/associated-type-bounds/consts.stderr
index 7f9fe5e500a..ddb677ec74d 100644
--- a/tests/ui/associated-type-bounds/consts.stderr
+++ b/tests/ui/associated-type-bounds/consts.stderr
@@ -1,5 +1,5 @@
 error: expected type, found constant
-  --> $DIR/consts.rs:3:29
+  --> $DIR/consts.rs:1:29
    |
 LL | pub fn accept(_: impl Trait<K: Copy>) {}
    |                             ^------ bounds are not allowed on associated constants
@@ -7,7 +7,7 @@ LL | pub fn accept(_: impl Trait<K: Copy>) {}
    |                             unexpected constant
    |
 note: the associated constant is defined here
-  --> $DIR/consts.rs:7:5
+  --> $DIR/consts.rs:5:5
    |
 LL |     const K: i32;
    |     ^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/duplicate.rs b/tests/ui/associated-type-bounds/duplicate.rs
index 54c8cd3fde0..06a1993da72 100644
--- a/tests/ui/associated-type-bounds/duplicate.rs
+++ b/tests/ui/associated-type-bounds/duplicate.rs
@@ -1,4 +1,3 @@
-#![feature(associated_type_bounds)]
 #![feature(type_alias_impl_trait)]
 
 use std::iter;
diff --git a/tests/ui/associated-type-bounds/duplicate.stderr b/tests/ui/associated-type-bounds/duplicate.stderr
index 6345ef4b798..2d298f0a013 100644
--- a/tests/ui/associated-type-bounds/duplicate.stderr
+++ b/tests/ui/associated-type-bounds/duplicate.stderr
@@ -1,5 +1,5 @@
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:7:36
+  --> $DIR/duplicate.rs:6:36
    |
 LL | struct SI1<T: Iterator<Item: Copy, Item: Send>> {
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -7,7 +7,7 @@ LL | struct SI1<T: Iterator<Item: Copy, Item: Send>> {
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:11:36
+  --> $DIR/duplicate.rs:10:36
    |
 LL | struct SI2<T: Iterator<Item: Copy, Item: Copy>> {
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -15,7 +15,7 @@ LL | struct SI2<T: Iterator<Item: Copy, Item: Copy>> {
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:15:39
+  --> $DIR/duplicate.rs:14:39
    |
 LL | struct SI3<T: Iterator<Item: 'static, Item: 'static>> {
    |                        -------------  ^^^^^^^^^^^^^ re-bound here
@@ -23,7 +23,7 @@ LL | struct SI3<T: Iterator<Item: 'static, Item: 'static>> {
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:21:29
+  --> $DIR/duplicate.rs:20:29
    |
 LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -31,7 +31,7 @@ LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:28:29
+  --> $DIR/duplicate.rs:27:29
    |
 LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -39,7 +39,7 @@ LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:35:32
+  --> $DIR/duplicate.rs:34:32
    |
 LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -47,7 +47,7 @@ LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:41:34
+  --> $DIR/duplicate.rs:40:34
    |
 LL | enum EI1<T: Iterator<Item: Copy, Item: Send>> {
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -55,7 +55,7 @@ LL | enum EI1<T: Iterator<Item: Copy, Item: Send>> {
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:45:34
+  --> $DIR/duplicate.rs:44:34
    |
 LL | enum EI2<T: Iterator<Item: Copy, Item: Copy>> {
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -63,7 +63,7 @@ LL | enum EI2<T: Iterator<Item: Copy, Item: Copy>> {
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:49:37
+  --> $DIR/duplicate.rs:48:37
    |
 LL | enum EI3<T: Iterator<Item: 'static, Item: 'static>> {
    |                      -------------  ^^^^^^^^^^^^^ re-bound here
@@ -71,7 +71,7 @@ LL | enum EI3<T: Iterator<Item: 'static, Item: 'static>> {
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:55:29
+  --> $DIR/duplicate.rs:54:29
    |
 LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -79,7 +79,7 @@ LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:62:29
+  --> $DIR/duplicate.rs:61:29
    |
 LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -87,7 +87,7 @@ LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:69:32
+  --> $DIR/duplicate.rs:68:32
    |
 LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -95,7 +95,7 @@ LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:75:35
+  --> $DIR/duplicate.rs:74:35
    |
 LL | union UI1<T: Iterator<Item: Copy, Item: Send>> {
    |                       ----------  ^^^^^^^^^^ re-bound here
@@ -103,7 +103,7 @@ LL | union UI1<T: Iterator<Item: Copy, Item: Send>> {
    |                       `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:79:35
+  --> $DIR/duplicate.rs:78:35
    |
 LL | union UI2<T: Iterator<Item: Copy, Item: Copy>> {
    |                       ----------  ^^^^^^^^^^ re-bound here
@@ -111,7 +111,7 @@ LL | union UI2<T: Iterator<Item: Copy, Item: Copy>> {
    |                       `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:83:38
+  --> $DIR/duplicate.rs:82:38
    |
 LL | union UI3<T: Iterator<Item: 'static, Item: 'static>> {
    |                       -------------  ^^^^^^^^^^^^^ re-bound here
@@ -119,7 +119,7 @@ LL | union UI3<T: Iterator<Item: 'static, Item: 'static>> {
    |                       `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:89:29
+  --> $DIR/duplicate.rs:88:29
    |
 LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -127,7 +127,7 @@ LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:96:29
+  --> $DIR/duplicate.rs:95:29
    |
 LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -135,7 +135,7 @@ LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:103:32
+  --> $DIR/duplicate.rs:102:32
    |
 LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -143,7 +143,7 @@ LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:109:32
+  --> $DIR/duplicate.rs:108:32
    |
 LL | fn FI1<T: Iterator<Item: Copy, Item: Send>>() {}
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -151,7 +151,7 @@ LL | fn FI1<T: Iterator<Item: Copy, Item: Send>>() {}
    |                    `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:111:32
+  --> $DIR/duplicate.rs:110:32
    |
 LL | fn FI2<T: Iterator<Item: Copy, Item: Copy>>() {}
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -159,7 +159,7 @@ LL | fn FI2<T: Iterator<Item: Copy, Item: Copy>>() {}
    |                    `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:113:35
+  --> $DIR/duplicate.rs:112:35
    |
 LL | fn FI3<T: Iterator<Item: 'static, Item: 'static>>() {}
    |                    -------------  ^^^^^^^^^^^^^ re-bound here
@@ -167,7 +167,7 @@ LL | fn FI3<T: Iterator<Item: 'static, Item: 'static>>() {}
    |                    `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:117:29
+  --> $DIR/duplicate.rs:116:29
    |
 LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -175,7 +175,7 @@ LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:123:29
+  --> $DIR/duplicate.rs:122:29
    |
 LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -183,7 +183,7 @@ LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:129:32
+  --> $DIR/duplicate.rs:128:32
    |
 LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -191,7 +191,7 @@ LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:134:42
+  --> $DIR/duplicate.rs:133:42
    |
 LL | fn FRPIT1() -> impl Iterator<Item: Copy, Item: Send> {
    |                              ----------  ^^^^^^^^^^ re-bound here
@@ -199,7 +199,7 @@ LL | fn FRPIT1() -> impl Iterator<Item: Copy, Item: Send> {
    |                              `Item` bound here first
 
 error[E0282]: type annotations needed
-  --> $DIR/duplicate.rs:136:5
+  --> $DIR/duplicate.rs:135:5
    |
 LL |     iter::empty()
    |     ^^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the function `empty`
@@ -210,7 +210,7 @@ LL |     iter::empty::<T>()
    |                +++++
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:139:42
+  --> $DIR/duplicate.rs:138:42
    |
 LL | fn FRPIT2() -> impl Iterator<Item: Copy, Item: Copy> {
    |                              ----------  ^^^^^^^^^^ re-bound here
@@ -218,7 +218,7 @@ LL | fn FRPIT2() -> impl Iterator<Item: Copy, Item: Copy> {
    |                              `Item` bound here first
 
 error[E0282]: type annotations needed
-  --> $DIR/duplicate.rs:141:5
+  --> $DIR/duplicate.rs:140:5
    |
 LL |     iter::empty()
    |     ^^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the function `empty`
@@ -229,7 +229,7 @@ LL |     iter::empty::<T>()
    |                +++++
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:144:45
+  --> $DIR/duplicate.rs:143:45
    |
 LL | fn FRPIT3() -> impl Iterator<Item: 'static, Item: 'static> {
    |                              -------------  ^^^^^^^^^^^^^ re-bound here
@@ -237,7 +237,7 @@ LL | fn FRPIT3() -> impl Iterator<Item: 'static, Item: 'static> {
    |                              `Item` bound here first
 
 error[E0282]: type annotations needed
-  --> $DIR/duplicate.rs:146:5
+  --> $DIR/duplicate.rs:145:5
    |
 LL |     iter::empty()
    |     ^^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the function `empty`
@@ -248,7 +248,7 @@ LL |     iter::empty::<T>()
    |                +++++
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:149:40
+  --> $DIR/duplicate.rs:148:40
    |
 LL | fn FAPIT1(_: impl Iterator<Item: Copy, Item: Send>) {}
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -256,7 +256,7 @@ LL | fn FAPIT1(_: impl Iterator<Item: Copy, Item: Send>) {}
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:151:40
+  --> $DIR/duplicate.rs:150:40
    |
 LL | fn FAPIT2(_: impl Iterator<Item: Copy, Item: Copy>) {}
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -264,7 +264,7 @@ LL | fn FAPIT2(_: impl Iterator<Item: Copy, Item: Copy>) {}
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:153:43
+  --> $DIR/duplicate.rs:152:43
    |
 LL | fn FAPIT3(_: impl Iterator<Item: 'static, Item: 'static>) {}
    |                            -------------  ^^^^^^^^^^^^^ re-bound here
@@ -272,7 +272,7 @@ LL | fn FAPIT3(_: impl Iterator<Item: 'static, Item: 'static>) {}
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:156:35
+  --> $DIR/duplicate.rs:155:35
    |
 LL | type TAI1<T: Iterator<Item: Copy, Item: Send>> = T;
    |                       ----------  ^^^^^^^^^^ re-bound here
@@ -280,7 +280,7 @@ LL | type TAI1<T: Iterator<Item: Copy, Item: Send>> = T;
    |                       `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:158:35
+  --> $DIR/duplicate.rs:157:35
    |
 LL | type TAI2<T: Iterator<Item: Copy, Item: Copy>> = T;
    |                       ----------  ^^^^^^^^^^ re-bound here
@@ -288,7 +288,7 @@ LL | type TAI2<T: Iterator<Item: Copy, Item: Copy>> = T;
    |                       `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:160:38
+  --> $DIR/duplicate.rs:159:38
    |
 LL | type TAI3<T: Iterator<Item: 'static, Item: 'static>> = T;
    |                       -------------  ^^^^^^^^^^^^^ re-bound here
@@ -296,7 +296,7 @@ LL | type TAI3<T: Iterator<Item: 'static, Item: 'static>> = T;
    |                       `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:164:29
+  --> $DIR/duplicate.rs:163:29
    |
 LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -304,7 +304,7 @@ LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:169:29
+  --> $DIR/duplicate.rs:168:29
    |
 LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -312,7 +312,7 @@ LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:174:32
+  --> $DIR/duplicate.rs:173:32
    |
 LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -320,7 +320,7 @@ LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:178:36
+  --> $DIR/duplicate.rs:177:36
    |
 LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -328,7 +328,7 @@ LL | type ETAI1<T: Iterator<Item: Copy, Item: Send>> = impl Copy;
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:180:36
+  --> $DIR/duplicate.rs:179:36
    |
 LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -336,7 +336,7 @@ LL | type ETAI2<T: Iterator<Item: Copy, Item: Copy>> = impl Copy;
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:182:39
+  --> $DIR/duplicate.rs:181:39
    |
 LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
    |                        -------------  ^^^^^^^^^^^^^ re-bound here
@@ -344,7 +344,7 @@ LL | type ETAI3<T: Iterator<Item: 'static, Item: 'static>> = impl Copy;
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:184:40
+  --> $DIR/duplicate.rs:183:40
    |
 LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -352,7 +352,7 @@ LL | type ETAI4 = impl Iterator<Item: Copy, Item: Send>;
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:186:40
+  --> $DIR/duplicate.rs:185:40
    |
 LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
    |                            ----------  ^^^^^^^^^^ re-bound here
@@ -360,7 +360,7 @@ LL | type ETAI5 = impl Iterator<Item: Copy, Item: Copy>;
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:188:43
+  --> $DIR/duplicate.rs:187:43
    |
 LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
    |                            -------------  ^^^^^^^^^^^^^ re-bound here
@@ -368,7 +368,7 @@ LL | type ETAI6 = impl Iterator<Item: 'static, Item: 'static>;
    |                            `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:191:36
+  --> $DIR/duplicate.rs:190:36
    |
 LL | trait TRI1<T: Iterator<Item: Copy, Item: Send>> {}
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -376,7 +376,7 @@ LL | trait TRI1<T: Iterator<Item: Copy, Item: Send>> {}
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:193:36
+  --> $DIR/duplicate.rs:192:36
    |
 LL | trait TRI2<T: Iterator<Item: Copy, Item: Copy>> {}
    |                        ----------  ^^^^^^^^^^ re-bound here
@@ -384,7 +384,7 @@ LL | trait TRI2<T: Iterator<Item: Copy, Item: Copy>> {}
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:195:39
+  --> $DIR/duplicate.rs:194:39
    |
 LL | trait TRI3<T: Iterator<Item: 'static, Item: 'static>> {}
    |                        -------------  ^^^^^^^^^^^^^ re-bound here
@@ -392,7 +392,7 @@ LL | trait TRI3<T: Iterator<Item: 'static, Item: 'static>> {}
    |                        `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:197:34
+  --> $DIR/duplicate.rs:196:34
    |
 LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -400,7 +400,7 @@ LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:197:34
+  --> $DIR/duplicate.rs:196:34
    |
 LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -410,7 +410,7 @@ LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:197:34
+  --> $DIR/duplicate.rs:196:34
    |
 LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -420,7 +420,7 @@ LL | trait TRS1: Iterator<Item: Copy, Item: Send> {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:201:34
+  --> $DIR/duplicate.rs:200:34
    |
 LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -428,7 +428,7 @@ LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:201:34
+  --> $DIR/duplicate.rs:200:34
    |
 LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -438,7 +438,7 @@ LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:201:34
+  --> $DIR/duplicate.rs:200:34
    |
 LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -448,7 +448,7 @@ LL | trait TRS2: Iterator<Item: Copy, Item: Copy> {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:205:37
+  --> $DIR/duplicate.rs:204:37
    |
 LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    |                      -------------  ^^^^^^^^^^^^^ re-bound here
@@ -456,7 +456,7 @@ LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:205:37
+  --> $DIR/duplicate.rs:204:37
    |
 LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    |                      -------------  ^^^^^^^^^^^^^ re-bound here
@@ -466,7 +466,7 @@ LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:205:37
+  --> $DIR/duplicate.rs:204:37
    |
 LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    |                      -------------  ^^^^^^^^^^^^^ re-bound here
@@ -476,7 +476,7 @@ LL | trait TRS3: Iterator<Item: 'static, Item: 'static> {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:211:29
+  --> $DIR/duplicate.rs:210:29
    |
 LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -484,7 +484,7 @@ LL |     T: Iterator<Item: Copy, Item: Send>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:217:29
+  --> $DIR/duplicate.rs:216:29
    |
 LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 ----------  ^^^^^^^^^^ re-bound here
@@ -492,7 +492,7 @@ LL |     T: Iterator<Item: Copy, Item: Copy>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:223:32
+  --> $DIR/duplicate.rs:222:32
    |
 LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 -------------  ^^^^^^^^^^^^^ re-bound here
@@ -500,7 +500,7 @@ LL |     T: Iterator<Item: 'static, Item: 'static>,
    |                 `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:229:32
+  --> $DIR/duplicate.rs:228:32
    |
 LL |     Self: Iterator<Item: Copy, Item: Send>,
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -508,7 +508,7 @@ LL |     Self: Iterator<Item: Copy, Item: Send>,
    |                    `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:229:32
+  --> $DIR/duplicate.rs:228:32
    |
 LL |     Self: Iterator<Item: Copy, Item: Send>,
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -518,7 +518,7 @@ LL |     Self: Iterator<Item: Copy, Item: Send>,
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:229:32
+  --> $DIR/duplicate.rs:228:32
    |
 LL |     Self: Iterator<Item: Copy, Item: Send>,
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -528,7 +528,7 @@ LL |     Self: Iterator<Item: Copy, Item: Send>,
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:237:32
+  --> $DIR/duplicate.rs:236:32
    |
 LL |     Self: Iterator<Item: Copy, Item: Copy>,
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -536,7 +536,7 @@ LL |     Self: Iterator<Item: Copy, Item: Copy>,
    |                    `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:237:32
+  --> $DIR/duplicate.rs:236:32
    |
 LL |     Self: Iterator<Item: Copy, Item: Copy>,
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -546,7 +546,7 @@ LL |     Self: Iterator<Item: Copy, Item: Copy>,
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:237:32
+  --> $DIR/duplicate.rs:236:32
    |
 LL |     Self: Iterator<Item: Copy, Item: Copy>,
    |                    ----------  ^^^^^^^^^^ re-bound here
@@ -556,7 +556,7 @@ LL |     Self: Iterator<Item: Copy, Item: Copy>,
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:245:35
+  --> $DIR/duplicate.rs:244:35
    |
 LL |     Self: Iterator<Item: 'static, Item: 'static>,
    |                    -------------  ^^^^^^^^^^^^^ re-bound here
@@ -564,7 +564,7 @@ LL |     Self: Iterator<Item: 'static, Item: 'static>,
    |                    `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:245:35
+  --> $DIR/duplicate.rs:244:35
    |
 LL |     Self: Iterator<Item: 'static, Item: 'static>,
    |                    -------------  ^^^^^^^^^^^^^ re-bound here
@@ -574,7 +574,7 @@ LL |     Self: Iterator<Item: 'static, Item: 'static>,
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:245:35
+  --> $DIR/duplicate.rs:244:35
    |
 LL |     Self: Iterator<Item: 'static, Item: 'static>,
    |                    -------------  ^^^^^^^^^^^^^ re-bound here
@@ -584,7 +584,7 @@ LL |     Self: Iterator<Item: 'static, Item: 'static>,
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:252:34
+  --> $DIR/duplicate.rs:251:34
    |
 LL |     type A: Iterator<Item: Copy, Item: Send>;
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -592,7 +592,7 @@ LL |     type A: Iterator<Item: Copy, Item: Send>;
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:256:34
+  --> $DIR/duplicate.rs:255:34
    |
 LL |     type A: Iterator<Item: Copy, Item: Copy>;
    |                      ----------  ^^^^^^^^^^ re-bound here
@@ -600,7 +600,7 @@ LL |     type A: Iterator<Item: Copy, Item: Copy>;
    |                      `Item` bound here first
 
 error[E0719]: the value of the associated type `Item` in trait `Iterator` is already specified
-  --> $DIR/duplicate.rs:260:37
+  --> $DIR/duplicate.rs:259:37
    |
 LL |     type A: Iterator<Item: 'static, Item: 'static>;
    |                      -------------  ^^^^^^^^^^^^^ re-bound here
diff --git a/tests/ui/associated-type-bounds/elision.rs b/tests/ui/associated-type-bounds/elision.rs
index 5d7ed940ac6..8d35df1e4f4 100644
--- a/tests/ui/associated-type-bounds/elision.rs
+++ b/tests/ui/associated-type-bounds/elision.rs
@@ -1,4 +1,3 @@
-#![feature(associated_type_bounds)]
 #![feature(anonymous_lifetime_in_impl_trait)]
 
 // The same thing should happen for constraints in dyn trait.
diff --git a/tests/ui/associated-type-bounds/elision.stderr b/tests/ui/associated-type-bounds/elision.stderr
index 749dffdc4d3..36ca5a80024 100644
--- a/tests/ui/associated-type-bounds/elision.stderr
+++ b/tests/ui/associated-type-bounds/elision.stderr
@@ -1,5 +1,5 @@
 error[E0106]: missing lifetime specifier
-  --> $DIR/elision.rs:5:70
+  --> $DIR/elision.rs:4:70
    |
 LL | fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
    |         ------------------------------------------------             ^^ expected named lifetime parameter
@@ -11,7 +11,7 @@ LL | fn f<'a>(x: &'a mut dyn Iterator<Item: Iterator<Item = &'a ()>>) -> Option<
    |     ++++     ++                                         ~~                  ~~
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/elision.rs:5:27
+  --> $DIR/elision.rs:4:27
    |
 LL | fn f(x: &mut dyn Iterator<Item: Iterator<Item = &'_ ()>>) -> Option<&'_ ()> { x.next() }
    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/entails-sized-object-safety.rs b/tests/ui/associated-type-bounds/entails-sized-object-safety.rs
index 211c67061e6..ad2cbe48209 100644
--- a/tests/ui/associated-type-bounds/entails-sized-object-safety.rs
+++ b/tests/ui/associated-type-bounds/entails-sized-object-safety.rs
@@ -1,7 +1,5 @@
 //@ build-pass (FIXME(62277): could be check-pass?)
 
-#![feature(associated_type_bounds)]
-
 trait Tr1: Sized { type As1; }
 trait Tr2<'a>: Sized { type As2; }
 
diff --git a/tests/ui/associated-type-bounds/enum-bounds.rs b/tests/ui/associated-type-bounds/enum-bounds.rs
index b5087acb6b8..b1c42610862 100644
--- a/tests/ui/associated-type-bounds/enum-bounds.rs
+++ b/tests/ui/associated-type-bounds/enum-bounds.rs
@@ -1,6 +1,5 @@
 //@ run-pass
 
-#![feature(associated_type_bounds)]
 #![allow(dead_code)]
 
 trait Tr1 { type As1; }
diff --git a/tests/ui/associated-type-bounds/fn-apit.rs b/tests/ui/associated-type-bounds/fn-apit.rs
index 8e1897cc3d4..24bb5b93c99 100644
--- a/tests/ui/associated-type-bounds/fn-apit.rs
+++ b/tests/ui/associated-type-bounds/fn-apit.rs
@@ -2,8 +2,6 @@
 //@ aux-build:fn-aux.rs
 
 #![allow(unused)]
-#![feature(associated_type_bounds)]
-
 extern crate fn_aux;
 
 use fn_aux::*;
diff --git a/tests/ui/associated-type-bounds/fn-aux.rs b/tests/ui/associated-type-bounds/fn-aux.rs
index 6aaa0cc895f..26ba2cc4015 100644
--- a/tests/ui/associated-type-bounds/fn-aux.rs
+++ b/tests/ui/associated-type-bounds/fn-aux.rs
@@ -1,8 +1,6 @@
 //@ run-pass
 //@ aux-build:fn-aux.rs
 
-#![feature(associated_type_bounds)]
-
 extern crate fn_aux;
 
 use fn_aux::*;
diff --git a/tests/ui/associated-type-bounds/fn-inline.rs b/tests/ui/associated-type-bounds/fn-inline.rs
index 8435cb44a9a..971751cc115 100644
--- a/tests/ui/associated-type-bounds/fn-inline.rs
+++ b/tests/ui/associated-type-bounds/fn-inline.rs
@@ -2,8 +2,6 @@
 //@ aux-build:fn-aux.rs
 
 #![allow(unused)]
-#![feature(associated_type_bounds)]
-
 extern crate fn_aux;
 
 use fn_aux::*;
diff --git a/tests/ui/associated-type-bounds/fn-where.rs b/tests/ui/associated-type-bounds/fn-where.rs
index 3b6b557fb11..d28860bd4cc 100644
--- a/tests/ui/associated-type-bounds/fn-where.rs
+++ b/tests/ui/associated-type-bounds/fn-where.rs
@@ -2,8 +2,6 @@
 //@ aux-build:fn-aux.rs
 
 #![allow(unused)]
-#![feature(associated_type_bounds)]
-
 extern crate fn_aux;
 
 use fn_aux::*;
diff --git a/tests/ui/associated-type-bounds/fn-wrap-apit.rs b/tests/ui/associated-type-bounds/fn-wrap-apit.rs
index 4ce714d432f..7b55cd33b24 100644
--- a/tests/ui/associated-type-bounds/fn-wrap-apit.rs
+++ b/tests/ui/associated-type-bounds/fn-wrap-apit.rs
@@ -1,7 +1,6 @@
 //@ run-pass
 //@ aux-build:fn-aux.rs
 
-#![feature(associated_type_bounds)]
 #![allow(dead_code)]
 
 extern crate fn_aux;
diff --git a/tests/ui/associated-type-bounds/higher-ranked.rs b/tests/ui/associated-type-bounds/higher-ranked.rs
index 9e783c4bdca..a313b54f5b9 100644
--- a/tests/ui/associated-type-bounds/higher-ranked.rs
+++ b/tests/ui/associated-type-bounds/higher-ranked.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait A<'a> {
     type Assoc: ?Sized;
 }
diff --git a/tests/ui/associated-type-bounds/hrtb.rs b/tests/ui/associated-type-bounds/hrtb.rs
index 73c7a1a5677..1bf574f2e65 100644
--- a/tests/ui/associated-type-bounds/hrtb.rs
+++ b/tests/ui/associated-type-bounds/hrtb.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait A<'a> {}
 trait B<'b> {}
 fn foo<T>()
diff --git a/tests/ui/associated-type-bounds/implied-bounds-cycle.rs b/tests/ui/associated-type-bounds/implied-bounds-cycle.rs
index 785d47d4791..8f2bec889ea 100644
--- a/tests/ui/associated-type-bounds/implied-bounds-cycle.rs
+++ b/tests/ui/associated-type-bounds/implied-bounds-cycle.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 trait A {
     type T;
 }
diff --git a/tests/ui/associated-type-bounds/implied-bounds-cycle.stderr b/tests/ui/associated-type-bounds/implied-bounds-cycle.stderr
index 1c1c64ea5f5..9ced7431210 100644
--- a/tests/ui/associated-type-bounds/implied-bounds-cycle.stderr
+++ b/tests/ui/associated-type-bounds/implied-bounds-cycle.stderr
@@ -1,12 +1,12 @@
 error[E0391]: cycle detected when computing the implied predicates of `B`
-  --> $DIR/implied-bounds-cycle.rs:7:15
+  --> $DIR/implied-bounds-cycle.rs:5:15
    |
 LL | trait B: A<T: B> {}
    |               ^
    |
    = note: ...which immediately requires computing the implied predicates of `B` again
 note: cycle used when computing normalized predicates of `B`
-  --> $DIR/implied-bounds-cycle.rs:7:1
+  --> $DIR/implied-bounds-cycle.rs:5:1
    |
 LL | trait B: A<T: B> {}
    | ^^^^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/implied-in-supertrait.rs b/tests/ui/associated-type-bounds/implied-in-supertrait.rs
index 83cb07d700a..639eb8dc6db 100644
--- a/tests/ui/associated-type-bounds/implied-in-supertrait.rs
+++ b/tests/ui/associated-type-bounds/implied-in-supertrait.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait Trait: Super<Assoc: Bound> {}
 
 trait Super {
diff --git a/tests/ui/associated-type-bounds/implied-region-constraints.rs b/tests/ui/associated-type-bounds/implied-region-constraints.rs
index 38219da61b4..ab03376c076 100644
--- a/tests/ui/associated-type-bounds/implied-region-constraints.rs
+++ b/tests/ui/associated-type-bounds/implied-region-constraints.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 trait Tr1 { type As1; }
 trait Tr2 { type As2; }
 
diff --git a/tests/ui/associated-type-bounds/implied-region-constraints.stderr b/tests/ui/associated-type-bounds/implied-region-constraints.stderr
index cddce8777ea..0aa76f732e4 100644
--- a/tests/ui/associated-type-bounds/implied-region-constraints.stderr
+++ b/tests/ui/associated-type-bounds/implied-region-constraints.stderr
@@ -1,5 +1,5 @@
 error: lifetime may not live long enough
-  --> $DIR/implied-region-constraints.rs:17:56
+  --> $DIR/implied-region-constraints.rs:15:56
    |
 LL | fn _bad_st<'a, 'b, T>(x: St<'a, 'b, T>)
    |            --  -- lifetime `'b` defined here
@@ -12,7 +12,7 @@ LL |     let _failure_proves_not_implied_outlives_region_b: &'b T = &x.f0;
    = help: consider adding the following bound: `'a: 'b`
 
 error: lifetime may not live long enough
-  --> $DIR/implied-region-constraints.rs:38:64
+  --> $DIR/implied-region-constraints.rs:36:64
    |
 LL | fn _bad_en7<'a, 'b, T>(x: En7<'a, 'b, T>)
    |             --  -- lifetime `'b` defined here
diff --git a/tests/ui/associated-type-bounds/inside-adt.rs b/tests/ui/associated-type-bounds/inside-adt.rs
index 2b4b060983e..bf520d7ee38 100644
--- a/tests/ui/associated-type-bounds/inside-adt.rs
+++ b/tests/ui/associated-type-bounds/inside-adt.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 use std::mem::ManuallyDrop;
 
 struct S1 { f: dyn Iterator<Item: Copy> }
diff --git a/tests/ui/associated-type-bounds/inside-adt.stderr b/tests/ui/associated-type-bounds/inside-adt.stderr
index ef45fae8f2a..ff9e2585264 100644
--- a/tests/ui/associated-type-bounds/inside-adt.stderr
+++ b/tests/ui/associated-type-bounds/inside-adt.stderr
@@ -1,53 +1,53 @@
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:5:29
+  --> $DIR/inside-adt.rs:3:29
    |
 LL | struct S1 { f: dyn Iterator<Item: Copy> }
    |                             ^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:7:33
+  --> $DIR/inside-adt.rs:5:33
    |
 LL | struct S2 { f: Box<dyn Iterator<Item: Copy>> }
    |                                 ^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:9:29
+  --> $DIR/inside-adt.rs:7:29
    |
 LL | struct S3 { f: dyn Iterator<Item: 'static> }
    |                             ^^^^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:12:26
+  --> $DIR/inside-adt.rs:10:26
    |
 LL | enum E1 { V(dyn Iterator<Item: Copy>) }
    |                          ^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:14:30
+  --> $DIR/inside-adt.rs:12:30
    |
 LL | enum E2 { V(Box<dyn Iterator<Item: Copy>>) }
    |                              ^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:16:26
+  --> $DIR/inside-adt.rs:14:26
    |
 LL | enum E3 { V(dyn Iterator<Item: 'static>) }
    |                          ^^^^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:19:41
+  --> $DIR/inside-adt.rs:17:41
    |
 LL | union U1 { f: ManuallyDrop<dyn Iterator<Item: Copy>> }
    |                                         ^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:21:45
+  --> $DIR/inside-adt.rs:19:45
    |
 LL | union U2 { f: ManuallyDrop<Box<dyn Iterator<Item: Copy>>> }
    |                                             ^^^^^^^^^^
 
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/inside-adt.rs:23:41
+  --> $DIR/inside-adt.rs:21:41
    |
 LL | union U3 { f: ManuallyDrop<dyn Iterator<Item: 'static>> }
    |                                         ^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/issue-104916.rs b/tests/ui/associated-type-bounds/issue-104916.rs
index ee29a0a2fc4..75f327e6ee7 100644
--- a/tests/ui/associated-type-bounds/issue-104916.rs
+++ b/tests/ui/associated-type-bounds/issue-104916.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 trait B {
     type AssocType;
 }
diff --git a/tests/ui/associated-type-bounds/issue-104916.stderr b/tests/ui/associated-type-bounds/issue-104916.stderr
index e8618b72103..21927328dad 100644
--- a/tests/ui/associated-type-bounds/issue-104916.stderr
+++ b/tests/ui/associated-type-bounds/issue-104916.stderr
@@ -1,5 +1,5 @@
 error: associated type bounds are not allowed in `dyn` types
-  --> $DIR/issue-104916.rs:9:19
+  --> $DIR/issue-104916.rs:7:19
    |
 LL |     dyn for<'j> B<AssocType: 'j>:,
    |                   ^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/issue-61752.rs b/tests/ui/associated-type-bounds/issue-61752.rs
index 22e43ea875e..a73ba833c43 100644
--- a/tests/ui/associated-type-bounds/issue-61752.rs
+++ b/tests/ui/associated-type-bounds/issue-61752.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait Foo {
     type Bar;
 }
diff --git a/tests/ui/associated-type-bounds/issue-70292.rs b/tests/ui/associated-type-bounds/issue-70292.rs
index 4b8e19904d0..1a6bdcd1a31 100644
--- a/tests/ui/associated-type-bounds/issue-70292.rs
+++ b/tests/ui/associated-type-bounds/issue-70292.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 fn foo<F>(_: F)
 where
     F: for<'a> Trait<Output: 'a>,
diff --git a/tests/ui/associated-type-bounds/issue-71443-1.rs b/tests/ui/associated-type-bounds/issue-71443-1.rs
index 5d2a3e6cbad..58341ac3d3a 100644
--- a/tests/ui/associated-type-bounds/issue-71443-1.rs
+++ b/tests/ui/associated-type-bounds/issue-71443-1.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 struct Incorrect;
 
 fn hello<F: for<'a> Iterator<Item: 'a>>() {
diff --git a/tests/ui/associated-type-bounds/issue-71443-1.stderr b/tests/ui/associated-type-bounds/issue-71443-1.stderr
index 6abaaf8e182..27ef545daaa 100644
--- a/tests/ui/associated-type-bounds/issue-71443-1.stderr
+++ b/tests/ui/associated-type-bounds/issue-71443-1.stderr
@@ -1,5 +1,5 @@
 error[E0308]: mismatched types
-  --> $DIR/issue-71443-1.rs:6:5
+  --> $DIR/issue-71443-1.rs:4:5
    |
 LL | fn hello<F: for<'a> Iterator<Item: 'a>>() {
    |                                          - help: try adding a return type: `-> Incorrect`
diff --git a/tests/ui/associated-type-bounds/issue-71443-2.rs b/tests/ui/associated-type-bounds/issue-71443-2.rs
index bd072f44650..24c4c88f20b 100644
--- a/tests/ui/associated-type-bounds/issue-71443-2.rs
+++ b/tests/ui/associated-type-bounds/issue-71443-2.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 fn hello<'b, F>()
 where
     for<'a> F: Iterator<Item: 'a> + 'b,
diff --git a/tests/ui/associated-type-bounds/issue-79949.rs b/tests/ui/associated-type-bounds/issue-79949.rs
index 4513f0a0b62..9f4a8ffa7e7 100644
--- a/tests/ui/associated-type-bounds/issue-79949.rs
+++ b/tests/ui/associated-type-bounds/issue-79949.rs
@@ -1,8 +1,6 @@
 //@ check-pass
 
 #![allow(incomplete_features)]
-#![feature(associated_type_bounds)]
-
 trait MP {
     type T<'a>;
 }
diff --git a/tests/ui/associated-type-bounds/issue-81193.rs b/tests/ui/associated-type-bounds/issue-81193.rs
index 1247f835be9..caa5915819b 100644
--- a/tests/ui/associated-type-bounds/issue-81193.rs
+++ b/tests/ui/associated-type-bounds/issue-81193.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait A<'a, 'b> {}
 
 trait B<'a, 'b, 'c> {}
diff --git a/tests/ui/associated-type-bounds/issue-83017.rs b/tests/ui/associated-type-bounds/issue-83017.rs
index a059b940e66..932b71cc0ae 100644
--- a/tests/ui/associated-type-bounds/issue-83017.rs
+++ b/tests/ui/associated-type-bounds/issue-83017.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait TraitA<'a> {
     type AsA;
 }
diff --git a/tests/ui/associated-type-bounds/nested-bounds-dont-eliminate-alias-bounds.rs b/tests/ui/associated-type-bounds/nested-bounds-dont-eliminate-alias-bounds.rs
index ee4de509da6..305c117da62 100644
--- a/tests/ui/associated-type-bounds/nested-bounds-dont-eliminate-alias-bounds.rs
+++ b/tests/ui/associated-type-bounds/nested-bounds-dont-eliminate-alias-bounds.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait Trait1 {
     type Assoc1: Bar;
 
diff --git a/tests/ui/associated-type-bounds/no-gat-position.rs b/tests/ui/associated-type-bounds/no-gat-position.rs
index 01740e6242e..5005c5027f4 100644
--- a/tests/ui/associated-type-bounds/no-gat-position.rs
+++ b/tests/ui/associated-type-bounds/no-gat-position.rs
@@ -1,5 +1,3 @@
-#![feature(associated_type_bounds)]
-
 // Test for <https://github.com/rust-lang/rust/issues/119857>.
 
 pub trait Iter {
diff --git a/tests/ui/associated-type-bounds/no-gat-position.stderr b/tests/ui/associated-type-bounds/no-gat-position.stderr
index 5692b2c7d09..c348d33c3a9 100644
--- a/tests/ui/associated-type-bounds/no-gat-position.stderr
+++ b/tests/ui/associated-type-bounds/no-gat-position.stderr
@@ -1,5 +1,5 @@
 error[E0229]: associated type bindings are not allowed here
-  --> $DIR/no-gat-position.rs:8:56
+  --> $DIR/no-gat-position.rs:6:56
    |
 LL |     fn next<'a>(&'a mut self) -> Option<Self::Item<'a, As1: Copy>>;
    |                                                        ^^^^^^^^^ associated type not allowed here
diff --git a/tests/ui/associated-type-bounds/overlaping-bound-suggestion.rs b/tests/ui/associated-type-bounds/overlaping-bound-suggestion.rs
index 3853bc8594f..c0012564843 100644
--- a/tests/ui/associated-type-bounds/overlaping-bound-suggestion.rs
+++ b/tests/ui/associated-type-bounds/overlaping-bound-suggestion.rs
@@ -1,5 +1,4 @@
 #![allow(bare_trait_objects)]
-#![feature(associated_type_bounds)]
 trait Item {
     type Core;
 }
diff --git a/tests/ui/associated-type-bounds/overlaping-bound-suggestion.stderr b/tests/ui/associated-type-bounds/overlaping-bound-suggestion.stderr
index 03d72f2ae2c..39a2b98e2e2 100644
--- a/tests/ui/associated-type-bounds/overlaping-bound-suggestion.stderr
+++ b/tests/ui/associated-type-bounds/overlaping-bound-suggestion.stderr
@@ -1,11 +1,11 @@
 error[E0191]: the value of the associated types `Item` and `IntoIter` in `IntoIterator` must be specified
-  --> $DIR/overlaping-bound-suggestion.rs:7:13
+  --> $DIR/overlaping-bound-suggestion.rs:6:13
    |
 LL |     inner: <IntoIterator<Item: IntoIterator<Item: >>::IntoIterator as Item>::Core,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: specify the associated types: `IntoIterator<Item: IntoIterator<Item: >, Item = Type, IntoIter = Type>`
 
 error[E0223]: ambiguous associated type
-  --> $DIR/overlaping-bound-suggestion.rs:7:13
+  --> $DIR/overlaping-bound-suggestion.rs:6:13
    |
 LL |     inner: <IntoIterator<Item: IntoIterator<Item: >>::IntoIterator as Item>::Core,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.rs b/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.rs
index 50a8cd8e04b..c23eff79ce2 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.rs
+++ b/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.rs
@@ -9,11 +9,9 @@ trait Trait {
 
 fn foo<T: Trait<method(i32): Send>>() {}
 //~^ ERROR argument types not allowed with return type notation
-//~| ERROR associated type bounds are unstable
 
 fn bar<T: Trait<method() -> (): Send>>() {}
 //~^ ERROR return type not allowed with return type notation
-//~| ERROR associated type bounds are unstable
 
 fn baz<T: Trait<method(..): Send>>() {}
 //~^ ERROR return type notation uses `()` instead of `(..)` for elided arguments
diff --git a/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.stderr b/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.stderr
index 02bec24c628..d95249efe40 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.stderr
+++ b/tests/ui/associated-type-bounds/return-type-notation/bad-inputs-and-output.stderr
@@ -1,29 +1,9 @@
 error: return type notation uses `()` instead of `(..)` for elided arguments
-  --> $DIR/bad-inputs-and-output.rs:18:24
+  --> $DIR/bad-inputs-and-output.rs:16:24
    |
 LL | fn baz<T: Trait<method(..): Send>>() {}
    |                        ^^ help: remove the `..`
 
-error[E0658]: associated type bounds are unstable
-  --> $DIR/bad-inputs-and-output.rs:10:17
-   |
-LL | fn foo<T: Trait<method(i32): Send>>() {}
-   |                 ^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/bad-inputs-and-output.rs:14:17
-   |
-LL | fn bar<T: Trait<method() -> (): Send>>() {}
-   |                 ^^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
 warning: the feature `return_type_notation` is incomplete and may not be safe to use and/or cause compiler crashes
   --> $DIR/bad-inputs-and-output.rs:3:12
    |
@@ -40,11 +20,10 @@ LL | fn foo<T: Trait<method(i32): Send>>() {}
    |                       ^^^^^ help: remove the input types: `()`
 
 error: return type not allowed with return type notation
-  --> $DIR/bad-inputs-and-output.rs:14:25
+  --> $DIR/bad-inputs-and-output.rs:13:25
    |
 LL | fn bar<T: Trait<method() -> (): Send>>() {}
    |                         ^^^^^^ help: remove the return type
 
-error: aborting due to 5 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors; 1 warning emitted
 
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.rs b/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.rs
index 0a98f0d2c8d..931e41bc840 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.rs
+++ b/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.rs
@@ -1,11 +1,14 @@
 //@ edition: 2021
 //@ compile-flags: -Zunpretty=expanded
+//@ check-pass
+
+// NOTE: This is not considered RTN syntax currently.
+// This is simply parenthesized generics.
 
 trait Trait {
     async fn method() {}
 }
 
 fn foo<T: Trait<method(i32): Send>>() {}
-//~^ ERROR associated type bounds are unstable
 
 fn main() {}
diff --git a/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stderr b/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stderr
deleted file mode 100644
index 3007240c3ab..00000000000
--- a/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stderr
+++ /dev/null
@@ -1,13 +0,0 @@
-error[E0658]: associated type bounds are unstable
-  --> $DIR/unpretty-parenthesized.rs:8:17
-   |
-LL | fn foo<T: Trait<method(i32): Send>>() {}
-   |                 ^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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/associated-type-bounds/return-type-notation/unpretty-parenthesized.stdout b/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stdout
index 17c3b9580ca..87667553837 100644
--- a/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stdout
+++ b/tests/ui/associated-type-bounds/return-type-notation/unpretty-parenthesized.stdout
@@ -5,6 +5,10 @@ use std::prelude::rust_2021::*;
 extern crate std;
 //@ edition: 2021
 //@ compile-flags: -Zunpretty=expanded
+//@ check-pass
+
+// NOTE: This is not considered RTN syntax currently.
+// This is simply parenthesized generics.
 
 trait Trait {
     async fn method() {}
diff --git a/tests/ui/associated-type-bounds/rpit.rs b/tests/ui/associated-type-bounds/rpit.rs
index 78710621cad..cb1d7f8fcc7 100644
--- a/tests/ui/associated-type-bounds/rpit.rs
+++ b/tests/ui/associated-type-bounds/rpit.rs
@@ -1,7 +1,5 @@
 //@ run-pass
 
-#![feature(associated_type_bounds)]
-
 use std::ops::Add;
 
 trait Tr1 { type As1; fn mk(self) -> Self::As1; }
diff --git a/tests/ui/associated-type-bounds/rpit.stderr b/tests/ui/associated-type-bounds/rpit.stderr
index 76bd75bd2ca..1091a4c573b 100644
--- a/tests/ui/associated-type-bounds/rpit.stderr
+++ b/tests/ui/associated-type-bounds/rpit.stderr
@@ -1,5 +1,5 @@
 warning: method `tr2` is never used
-  --> $DIR/rpit.rs:8:20
+  --> $DIR/rpit.rs:6:20
    |
 LL | trait Tr2<'a> { fn tr2(self) -> &'a Self; }
    |       ---          ^^^
diff --git a/tests/ui/associated-type-bounds/struct-bounds.rs b/tests/ui/associated-type-bounds/struct-bounds.rs
index 2c46832cb99..0c8a52539f3 100644
--- a/tests/ui/associated-type-bounds/struct-bounds.rs
+++ b/tests/ui/associated-type-bounds/struct-bounds.rs
@@ -1,8 +1,6 @@
 //@ run-pass
 
 #![allow(unused)]
-#![feature(associated_type_bounds)]
-
 trait Tr1 { type As1; }
 trait Tr2 { type As2; }
 trait Tr3 {}
diff --git a/tests/ui/associated-type-bounds/supertrait-defines-ty.rs b/tests/ui/associated-type-bounds/supertrait-defines-ty.rs
index 62b23b5fbab..ed1c1fa6f03 100644
--- a/tests/ui/associated-type-bounds/supertrait-defines-ty.rs
+++ b/tests/ui/associated-type-bounds/supertrait-defines-ty.rs
@@ -3,8 +3,6 @@
 // Make sure that we don't look into associated type bounds when looking for
 // supertraits that define an associated type. Fixes #76593.
 
-#![feature(associated_type_bounds)]
-
 trait Load: Sized {
     type Blob;
 }
diff --git a/tests/ui/associated-type-bounds/trait-alias-impl-trait.rs b/tests/ui/associated-type-bounds/trait-alias-impl-trait.rs
index 6ca9f80ccaf..fb6a4fcbe97 100644
--- a/tests/ui/associated-type-bounds/trait-alias-impl-trait.rs
+++ b/tests/ui/associated-type-bounds/trait-alias-impl-trait.rs
@@ -1,7 +1,6 @@
 //@ run-pass
 
 #![allow(dead_code)]
-#![feature(associated_type_bounds)]
 #![feature(type_alias_impl_trait)]
 
 use std::ops::Add;
diff --git a/tests/ui/associated-type-bounds/trait-params.rs b/tests/ui/associated-type-bounds/trait-params.rs
index 6782d688126..72a445351e7 100644
--- a/tests/ui/associated-type-bounds/trait-params.rs
+++ b/tests/ui/associated-type-bounds/trait-params.rs
@@ -1,7 +1,5 @@
 //@ build-pass (FIXME(62277): could be check-pass?)
 
-#![feature(associated_type_bounds)]
-
 use std::iter::Once;
 use std::ops::Range;
 
diff --git a/tests/ui/associated-type-bounds/type-alias.rs b/tests/ui/associated-type-bounds/type-alias.rs
index 819a7656a44..2dccb37f37f 100644
--- a/tests/ui/associated-type-bounds/type-alias.rs
+++ b/tests/ui/associated-type-bounds/type-alias.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 type _TaWhere1<T> where T: Iterator<Item: Copy> = T; //~ WARNING type_alias_bounds
 type _TaWhere2<T> where T: Iterator<Item: 'static> = T; //~ WARNING type_alias_bounds
 type _TaWhere3<T> where T: Iterator<Item: 'static> = T; //~ WARNING type_alias_bounds
diff --git a/tests/ui/associated-type-bounds/type-alias.stderr b/tests/ui/associated-type-bounds/type-alias.stderr
index c22b80b889e..072c471467c 100644
--- a/tests/ui/associated-type-bounds/type-alias.stderr
+++ b/tests/ui/associated-type-bounds/type-alias.stderr
@@ -1,5 +1,5 @@
 warning: where clauses are not enforced in type aliases
-  --> $DIR/type-alias.rs:5:25
+  --> $DIR/type-alias.rs:3:25
    |
 LL | type _TaWhere1<T> where T: Iterator<Item: Copy> = T;
    |                         ^^^^^^^^^^^^^^^^^^^^^^^
@@ -12,7 +12,7 @@ LL + type _TaWhere1<T>  = T;
    |
 
 warning: where clauses are not enforced in type aliases
-  --> $DIR/type-alias.rs:6:25
+  --> $DIR/type-alias.rs:4:25
    |
 LL | type _TaWhere2<T> where T: Iterator<Item: 'static> = T;
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -24,7 +24,7 @@ LL + type _TaWhere2<T>  = T;
    |
 
 warning: where clauses are not enforced in type aliases
-  --> $DIR/type-alias.rs:7:25
+  --> $DIR/type-alias.rs:5:25
    |
 LL | type _TaWhere3<T> where T: Iterator<Item: 'static> = T;
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -36,7 +36,7 @@ LL + type _TaWhere3<T>  = T;
    |
 
 warning: where clauses are not enforced in type aliases
-  --> $DIR/type-alias.rs:8:25
+  --> $DIR/type-alias.rs:6:25
    |
 LL | type _TaWhere4<T> where T: Iterator<Item: 'static + Copy + Send> = T;
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -48,7 +48,7 @@ LL + type _TaWhere4<T>  = T;
    |
 
 warning: where clauses are not enforced in type aliases
-  --> $DIR/type-alias.rs:9:25
+  --> $DIR/type-alias.rs:7:25
    |
 LL | type _TaWhere5<T> where T: Iterator<Item: for<'a> Into<&'a u8>> = T;
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -60,7 +60,7 @@ LL + type _TaWhere5<T>  = T;
    |
 
 warning: where clauses are not enforced in type aliases
-  --> $DIR/type-alias.rs:10:25
+  --> $DIR/type-alias.rs:8:25
    |
 LL | type _TaWhere6<T> where T: Iterator<Item: Iterator<Item: Copy>> = T;
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -72,7 +72,7 @@ LL + type _TaWhere6<T>  = T;
    |
 
 warning: bounds on generic parameters are not enforced in type aliases
-  --> $DIR/type-alias.rs:12:20
+  --> $DIR/type-alias.rs:10:20
    |
 LL | type _TaInline1<T: Iterator<Item: Copy>> = T;
    |                    ^^^^^^^^^^^^^^^^^^^^
@@ -84,7 +84,7 @@ LL + type _TaInline1<T> = T;
    |
 
 warning: bounds on generic parameters are not enforced in type aliases
-  --> $DIR/type-alias.rs:13:20
+  --> $DIR/type-alias.rs:11:20
    |
 LL | type _TaInline2<T: Iterator<Item: 'static>> = T;
    |                    ^^^^^^^^^^^^^^^^^^^^^^^
@@ -96,7 +96,7 @@ LL + type _TaInline2<T> = T;
    |
 
 warning: bounds on generic parameters are not enforced in type aliases
-  --> $DIR/type-alias.rs:14:20
+  --> $DIR/type-alias.rs:12:20
    |
 LL | type _TaInline3<T: Iterator<Item: 'static>> = T;
    |                    ^^^^^^^^^^^^^^^^^^^^^^^
@@ -108,7 +108,7 @@ LL + type _TaInline3<T> = T;
    |
 
 warning: bounds on generic parameters are not enforced in type aliases
-  --> $DIR/type-alias.rs:15:20
+  --> $DIR/type-alias.rs:13:20
    |
 LL | type _TaInline4<T: Iterator<Item: 'static + Copy + Send>> = T;
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -120,7 +120,7 @@ LL + type _TaInline4<T> = T;
    |
 
 warning: bounds on generic parameters are not enforced in type aliases
-  --> $DIR/type-alias.rs:16:20
+  --> $DIR/type-alias.rs:14:20
    |
 LL | type _TaInline5<T: Iterator<Item: for<'a> Into<&'a u8>>> = T;
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -132,7 +132,7 @@ LL + type _TaInline5<T> = T;
    |
 
 warning: bounds on generic parameters are not enforced in type aliases
-  --> $DIR/type-alias.rs:17:20
+  --> $DIR/type-alias.rs:15:20
    |
 LL | type _TaInline6<T: Iterator<Item: Iterator<Item: Copy>>> = T;
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/associated-type-bounds/union-bounds.rs b/tests/ui/associated-type-bounds/union-bounds.rs
index 8a7ba6f5ebf..b9b92a96fb0 100644
--- a/tests/ui/associated-type-bounds/union-bounds.rs
+++ b/tests/ui/associated-type-bounds/union-bounds.rs
@@ -1,7 +1,5 @@
 //@ run-pass
 
-#![feature(associated_type_bounds)]
-
 #![allow(unused_assignments)]
 
 trait Tr1: Copy { type As1: Copy; }
diff --git a/tests/ui/associated-types/issue-63591.rs b/tests/ui/associated-types/issue-63591.rs
index 33826a24ddb..52464d94a23 100644
--- a/tests/ui/associated-types/issue-63591.rs
+++ b/tests/ui/associated-types/issue-63591.rs
@@ -1,6 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
 #![feature(impl_trait_in_assoc_type)]
 
 fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-associated_type_bounds.rs b/tests/ui/feature-gates/feature-gate-associated_type_bounds.rs
deleted file mode 100644
index 717da41f871..00000000000
--- a/tests/ui/feature-gates/feature-gate-associated_type_bounds.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-use std::mem::ManuallyDrop;
-
-trait Tr1 { type As1: Copy; }
-trait Tr2 { type As2: Copy; }
-
-struct S1;
-#[derive(Copy, Clone)]
-struct S2;
-impl Tr1 for S1 { type As1 = S2; }
-
-trait _Tr3 {
-    type A: Iterator<Item: Copy>;
-    //~^ ERROR associated type bounds are unstable
-
-    type B: Iterator<Item: 'static>;
-    //~^ ERROR associated type bounds are unstable
-}
-
-struct _St1<T: Tr1<As1: Tr2>> {
-//~^ ERROR associated type bounds are unstable
-    outest: T,
-    outer: T::As1,
-    inner: <T::As1 as Tr2>::As2,
-}
-
-enum _En1<T: Tr1<As1: Tr2>> {
-//~^ ERROR associated type bounds are unstable
-    Outest(T),
-    Outer(T::As1),
-    Inner(<T::As1 as Tr2>::As2),
-}
-
-union _Un1<T: Tr1<As1: Tr2>> {
-//~^ ERROR associated type bounds are unstable
-    outest: ManuallyDrop<T>,
-    outer: ManuallyDrop<T::As1>,
-    inner: ManuallyDrop<<T::As1 as Tr2>::As2>,
-}
-
-type _TaWhere1<T> where T: Iterator<Item: Copy> = T;
-//~^ ERROR associated type bounds are unstable
-
-fn _apit(_: impl Tr1<As1: Copy>) {}
-//~^ ERROR associated type bounds are unstable
-
-fn _rpit() -> impl Tr1<As1: Copy> { S1 }
-//~^ ERROR associated type bounds are unstable
-
-const _cdef: impl Tr1<As1: Copy> = S1;
-//~^ ERROR associated type bounds are unstable
-//~| ERROR `impl Trait` is not allowed in const types
-
-static _sdef: impl Tr1<As1: Copy> = S1;
-//~^ ERROR associated type bounds are unstable
-//~| ERROR `impl Trait` is not allowed in static types
-
-fn main() {
-    let _: impl Tr1<As1: Copy> = S1;
-    //~^ ERROR associated type bounds are unstable
-    //~| ERROR `impl Trait` is not allowed in the type of variable bindings
-}
diff --git a/tests/ui/feature-gates/feature-gate-associated_type_bounds.stderr b/tests/ui/feature-gates/feature-gate-associated_type_bounds.stderr
deleted file mode 100644
index 1838eab5cda..00000000000
--- a/tests/ui/feature-gates/feature-gate-associated_type_bounds.stderr
+++ /dev/null
@@ -1,138 +0,0 @@
-error[E0658]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:12:22
-   |
-LL |     type A: Iterator<Item: Copy>;
-   |                      ^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:15:22
-   |
-LL |     type B: Iterator<Item: 'static>;
-   |                      ^^^^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:19:20
-   |
-LL | struct _St1<T: Tr1<As1: Tr2>> {
-   |                    ^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:26:18
-   |
-LL | enum _En1<T: Tr1<As1: Tr2>> {
-   |                  ^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:33:19
-   |
-LL | union _Un1<T: Tr1<As1: Tr2>> {
-   |                   ^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:40:37
-   |
-LL | type _TaWhere1<T> where T: Iterator<Item: Copy> = T;
-   |                                     ^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:43:22
-   |
-LL | fn _apit(_: impl Tr1<As1: Copy>) {}
-   |                      ^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:46:24
-   |
-LL | fn _rpit() -> impl Tr1<As1: Copy> { S1 }
-   |                        ^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:49:23
-   |
-LL | const _cdef: impl Tr1<As1: Copy> = S1;
-   |                       ^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:53:24
-   |
-LL | static _sdef: impl Tr1<As1: Copy> = S1;
-   |                        ^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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]: associated type bounds are unstable
-  --> $DIR/feature-gate-associated_type_bounds.rs:58:21
-   |
-LL |     let _: impl Tr1<As1: Copy> = S1;
-   |                     ^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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[E0562]: `impl Trait` is not allowed in const types
-  --> $DIR/feature-gate-associated_type_bounds.rs:49:14
-   |
-LL | const _cdef: impl Tr1<As1: Copy> = S1;
-   |              ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: `impl Trait` is only allowed in arguments and return types of functions and methods
-
-error[E0562]: `impl Trait` is not allowed in static types
-  --> $DIR/feature-gate-associated_type_bounds.rs:53:15
-   |
-LL | static _sdef: impl Tr1<As1: Copy> = S1;
-   |               ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: `impl Trait` is only allowed in arguments and return types of functions and methods
-
-error[E0562]: `impl Trait` is not allowed in the type of variable bindings
-  --> $DIR/feature-gate-associated_type_bounds.rs:58:12
-   |
-LL |     let _: impl Tr1<As1: Copy> = S1;
-   |            ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: `impl Trait` is only allowed in arguments and return types of functions and methods
-
-error: aborting due to 14 previous errors
-
-Some errors have detailed explanations: E0562, E0658.
-For more information about an error, try `rustc --explain E0562`.
diff --git a/tests/ui/impl-trait/in-trait/lifetime-in-associated-trait-bound.rs b/tests/ui/impl-trait/in-trait/lifetime-in-associated-trait-bound.rs
index e0d4f461974..b29d71437b9 100644
--- a/tests/ui/impl-trait/in-trait/lifetime-in-associated-trait-bound.rs
+++ b/tests/ui/impl-trait/in-trait/lifetime-in-associated-trait-bound.rs
@@ -1,7 +1,5 @@
 //@ check-pass
 
-#![feature(associated_type_bounds)]
-
 trait Trait {
     type Type;
 
diff --git a/tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs b/tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs
index 6566d8a1115..ed3ffed2f80 100644
--- a/tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs
+++ b/tests/ui/parser/constraints-before-generic-args-syntactic-pass.rs
@@ -3,11 +3,7 @@
 #[cfg(FALSE)]
 fn syntax() {
     foo::<T = u8, T: Ord, String>();
-    //~^ WARN associated type bounds are unstable
-    //~| WARN unstable syntax
     foo::<T = u8, 'a, T: Ord>();
-    //~^ WARN associated type bounds are unstable
-    //~| WARN unstable syntax
 }
 
 fn main() {}
diff --git a/tests/ui/parser/constraints-before-generic-args-syntactic-pass.stderr b/tests/ui/parser/constraints-before-generic-args-syntactic-pass.stderr
deleted file mode 100644
index 393ed704b41..00000000000
--- a/tests/ui/parser/constraints-before-generic-args-syntactic-pass.stderr
+++ /dev/null
@@ -1,26 +0,0 @@
-warning: associated type bounds are unstable
-  --> $DIR/constraints-before-generic-args-syntactic-pass.rs:5:19
-   |
-LL |     foo::<T = u8, T: Ord, String>();
-   |                   ^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-   = warning: unstable syntax can change at any point in the future, causing a hard error!
-   = note: for more information, see issue #65860 <https://github.com/rust-lang/rust/issues/65860>
-
-warning: associated type bounds are unstable
-  --> $DIR/constraints-before-generic-args-syntactic-pass.rs:8:23
-   |
-LL |     foo::<T = u8, 'a, T: Ord>();
-   |                       ^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-   = warning: unstable syntax can change at any point in the future, causing a hard error!
-   = note: for more information, see issue #65860 <https://github.com/rust-lang/rust/issues/65860>
-
-warning: 2 warnings emitted
-
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.rs
index 91f1b90bdc0..51dfe29b829 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.rs
@@ -3,7 +3,6 @@
 
 #![allow(incomplete_features)]
 #![feature(
-    associated_type_bounds,
     const_trait_impl,
     effects,
     const_cmp,
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.stderr
index d4be71f2f46..03038eb5c84 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-trait.stderr
@@ -1,5 +1,5 @@
 error[E0277]: can't compare `()` with `()`
-  --> $DIR/const-impl-trait.rs:37:17
+  --> $DIR/const-impl-trait.rs:36:17
    |
 LL |     assert!(cmp(&()));
    |             --- ^^^ no implementation for `() == ()`
@@ -9,13 +9,13 @@ LL |     assert!(cmp(&()));
    = help: the trait `const PartialEq` is not implemented for `()`
    = help: the trait `PartialEq` is implemented for `()`
 note: required by a bound in `cmp`
-  --> $DIR/const-impl-trait.rs:14:23
+  --> $DIR/const-impl-trait.rs:13:23
    |
 LL | const fn cmp(a: &impl ~const PartialEq) -> bool {
    |                       ^^^^^^^^^^^^^^^^ required by this bound in `cmp`
 
 error[E0369]: binary operation `==` cannot be applied to type `&impl ~const PartialEq`
-  --> $DIR/const-impl-trait.rs:15:7
+  --> $DIR/const-impl-trait.rs:14:7
    |
 LL |     a == a
    |     - ^^ - &impl ~const PartialEq
diff --git a/tests/ui/suggestions/missing-assoc-fn.rs b/tests/ui/suggestions/missing-assoc-fn.rs
index 9af8e5a939d..260d3b33e28 100644
--- a/tests/ui/suggestions/missing-assoc-fn.rs
+++ b/tests/ui/suggestions/missing-assoc-fn.rs
@@ -6,7 +6,7 @@ trait TraitA<A> {
     fn foo<T: TraitB<Item = A>>(_: T) -> Self;
     fn bar<T>(_: T) -> Self;
     fn baz<T>(_: T) -> Self where T: TraitB, <T as TraitB>::Item: Copy;
-    fn bat<T: TraitB<Item: Copy>>(_: T) -> Self; //~ ERROR associated type bounds are unstable
+    fn bat<T: TraitB<Item: Copy>>(_: T) -> Self;
 }
 
 struct S;
diff --git a/tests/ui/suggestions/missing-assoc-fn.stderr b/tests/ui/suggestions/missing-assoc-fn.stderr
index 61a5492d583..d819f7e8bd2 100644
--- a/tests/ui/suggestions/missing-assoc-fn.stderr
+++ b/tests/ui/suggestions/missing-assoc-fn.stderr
@@ -1,13 +1,3 @@
-error[E0658]: associated type bounds are unstable
-  --> $DIR/missing-assoc-fn.rs:9:22
-   |
-LL |     fn bat<T: TraitB<Item: Copy>>(_: T) -> Self;
-   |                      ^^^^^^^^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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[E0046]: not all trait items implemented, missing: `foo`, `bar`, `baz`, `bat`
   --> $DIR/missing-assoc-fn.rs:14:1
    |
@@ -31,7 +21,6 @@ LL | impl FromIterator<()> for X {
    |
    = help: implement the missing item: `fn from_iter<T: IntoIterator<Item = ()>>(_: T) -> Self { todo!() }`
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0046, E0658.
-For more information about an error, try `rustc --explain E0046`.
+For more information about this error, try `rustc --explain E0046`.
diff --git a/tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs
index 48d19f6dd4e..c98eec4af01 100644
--- a/tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs
+++ b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.rs
@@ -6,8 +6,6 @@ fn main() {
     let _: Vec<A:B> = A::B;
     //~^ ERROR cannot find trait `B` in this scope
     //~| HELP you might have meant to write a path instead of an associated type bound
-    //~| ERROR associated type bounds are unstable
-    //~| HELP add `#![feature(associated_type_bounds)]` to the crate attributes to enable
     //~| ERROR struct takes at least 1 generic argument but 0 generic arguments were supplied
     //~| HELP add missing generic argument
     //~| ERROR associated type bindings are not allowed here
diff --git a/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr
index 9c22873e79c..834c141ec3e 100644
--- a/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr
+++ b/tests/ui/suggestions/type-ascription-instead-of-path-in-type.stderr
@@ -9,16 +9,6 @@ help: you might have meant to write a path instead of an associated type bound
 LL |     let _: Vec<A::B> = A::B;
    |                 ~~
 
-error[E0658]: associated type bounds are unstable
-  --> $DIR/type-ascription-instead-of-path-in-type.rs:6:16
-   |
-LL |     let _: Vec<A:B> = A::B;
-   |                ^^^
-   |
-   = note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
-   = help: add `#![feature(associated_type_bounds)]` 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[E0107]: struct takes at least 1 generic argument but 0 generic arguments were supplied
   --> $DIR/type-ascription-instead-of-path-in-type.rs:6:12
    |
@@ -36,7 +26,7 @@ error[E0229]: associated type bindings are not allowed here
 LL |     let _: Vec<A:B> = A::B;
    |                ^^^ associated type not allowed here
 
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
 
-Some errors have detailed explanations: E0107, E0229, E0405, E0658.
+Some errors have detailed explanations: E0107, E0229, E0405.
 For more information about an error, try `rustc --explain E0107`.
diff --git a/tests/ui/traits/negative-bounds/associated-constraints.rs b/tests/ui/traits/negative-bounds/associated-constraints.rs
index 4a7132ccde9..795e68bb469 100644
--- a/tests/ui/traits/negative-bounds/associated-constraints.rs
+++ b/tests/ui/traits/negative-bounds/associated-constraints.rs
@@ -1,4 +1,4 @@
-#![feature(negative_bounds, associated_type_bounds)]
+#![feature(negative_bounds)]
 
 trait Trait {
     type Assoc;