diff --git a/compiler/rustc_arena/src/lib.rs b/compiler/rustc_arena/src/lib.rs
index f4900ece1cc51..d4967b2e63335 100644
--- a/compiler/rustc_arena/src/lib.rs
+++ b/compiler/rustc_arena/src/lib.rs
@@ -11,20 +11,23 @@
html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/",
test(no_crate_inject, attr(deny(warnings)))
)]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![deny(unsafe_op_in_unsafe_fn)]
+#![feature(decl_macro)]
#![feature(dropck_eyepatch)]
-#![feature(new_uninit)]
#![feature(maybe_uninit_slice)]
#![feature(min_specialization)]
-#![feature(decl_macro)]
+#![feature(new_uninit)]
#![feature(pointer_byte_offsets)]
#![feature(rustc_attrs)]
-#![cfg_attr(test, feature(test))]
#![feature(strict_provenance)]
-#![deny(unsafe_op_in_unsafe_fn)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
-#![allow(clippy::mut_from_ref)] // Arena allocators are one of the places where this pattern is fine.
+#![cfg_attr(test, feature(test))]
+// Arena allocators are one of the places where this pattern is fine.
+#![allow(clippy::mut_from_ref)]
use smallvec::SmallVec;
diff --git a/compiler/rustc_ast/src/lib.rs b/compiler/rustc_ast/src/lib.rs
index b07ed1d1c741e..f95a87bca3fae 100644
--- a/compiler/rustc_ast/src/lib.rs
+++ b/compiler/rustc_ast/src/lib.rs
@@ -8,6 +8,9 @@
html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/",
test(attr(deny(warnings)))
)]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(associated_type_bounds)]
#![feature(box_patterns)]
#![feature(const_trait_impl)]
@@ -16,9 +19,8 @@
#![feature(min_specialization)]
#![feature(negative_impls)]
#![feature(stmt_expr_attributes)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate rustc_macros;
diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs
index 89775bdee263e..fa4214d98da6d 100644
--- a/compiler/rustc_ast_lowering/src/lib.rs
+++ b/compiler/rustc_ast_lowering/src/lib.rs
@@ -30,12 +30,14 @@
//! get confused if the spans from leaf AST nodes occur in multiple places
//! in the HIR, especially for multiple identifiers.
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(box_patterns)]
#![feature(let_chains)]
#![feature(never_type)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_ast_passes/src/lib.rs b/compiler/rustc_ast_passes/src/lib.rs
index 7db413c5bbd42..d4d3c81892eaa 100644
--- a/compiler/rustc_ast_passes/src/lib.rs
+++ b/compiler/rustc_ast_passes/src/lib.rs
@@ -4,10 +4,12 @@
//!
//! The crate also contains other misc AST visitors, e.g. `node_count` and `show_span`.
+// tidy-alphabetical-start
#![feature(box_patterns)]
#![feature(if_let_guard)]
#![feature(iter_is_partitioned)]
#![feature(let_chains)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#![deny(rustc::untranslatable_diagnostic)]
#![deny(rustc::diagnostic_outside_of_impl)]
diff --git a/compiler/rustc_ast_pretty/src/lib.rs b/compiler/rustc_ast_pretty/src/lib.rs
index bf094af5f7bb0..04dac638a3c34 100644
--- a/compiler/rustc_ast_pretty/src/lib.rs
+++ b/compiler/rustc_ast_pretty/src/lib.rs
@@ -1,8 +1,10 @@
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(associated_type_bounds)]
#![feature(box_patterns)]
#![feature(with_negative_coherence)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
mod helpers;
diff --git a/compiler/rustc_attr/src/lib.rs b/compiler/rustc_attr/src/lib.rs
index cfed2acfb3a41..7a8c638ea55e4 100644
--- a/compiler/rustc_attr/src/lib.rs
+++ b/compiler/rustc_attr/src/lib.rs
@@ -4,9 +4,11 @@
//! The goal is to move the definition of `MetaItem` and things that don't need to be in `syntax`
//! to this crate.
-#![feature(let_chains)]
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(let_chains)]
+// tidy-alphabetical-end
#[macro_use]
extern crate rustc_macros;
diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs
index efe525c224d0a..75a2a2c5d246c 100644
--- a/compiler/rustc_borrowck/src/lib.rs
+++ b/compiler/rustc_borrowck/src/lib.rs
@@ -1,15 +1,17 @@
//! This query borrow-checks the MIR to (further) ensure it is not broken.
+// tidy-alphabetical-start
#![feature(associated_type_bounds)]
#![feature(box_patterns)]
+#![feature(lazy_cell)]
#![feature(let_chains)]
#![feature(min_specialization)]
#![feature(never_type)]
-#![feature(lazy_cell)]
#![feature(rustc_attrs)]
#![feature(stmt_expr_attributes)]
#![feature(trusted_step)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/compiler/rustc_builtin_macros/src/lib.rs b/compiler/rustc_builtin_macros/src/lib.rs
index ebf1448f55c99..d21c508d64e82 100644
--- a/compiler/rustc_builtin_macros/src/lib.rs
+++ b/compiler/rustc_builtin_macros/src/lib.rs
@@ -2,6 +2,7 @@
//! injecting code into the crate before it is lowered to HIR.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
#![feature(array_windows)]
#![feature(box_patterns)]
#![feature(decl_macro)]
@@ -11,6 +12,7 @@
#![feature(lint_reasons)]
#![feature(proc_macro_internals)]
#![feature(proc_macro_quote)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
extern crate proc_macro;
diff --git a/compiler/rustc_codegen_cranelift/src/lib.rs b/compiler/rustc_codegen_cranelift/src/lib.rs
index d01ded8abaa52..fe28958e39afb 100644
--- a/compiler/rustc_codegen_cranelift/src/lib.rs
+++ b/compiler/rustc_codegen_cranelift/src/lib.rs
@@ -1,8 +1,10 @@
-#![feature(rustc_private)]
// Note: please avoid adding other feature gates where possible
+#![feature(rustc_private)]
+// tidy-alphabetical-start
#![warn(rust_2018_idioms)]
-#![warn(unused_lifetimes)]
#![warn(unreachable_pub)]
+#![warn(unused_lifetimes)]
+// tidy-alphabetical-end
extern crate jobserver;
#[macro_use]
diff --git a/compiler/rustc_codegen_gcc/src/lib.rs b/compiler/rustc_codegen_gcc/src/lib.rs
index 697ae015fed9a..3bc2a80d08ec4 100644
--- a/compiler/rustc_codegen_gcc/src/lib.rs
+++ b/compiler/rustc_codegen_gcc/src/lib.rs
@@ -6,20 +6,22 @@
* TODO(antoyo): remove the patches.
*/
-#![feature(
- rustc_private,
- decl_macro,
- associated_type_bounds,
- never_type,
- trusted_len,
- hash_raw_entry
-)]
+// tidy-alphabetical-start
#![allow(broken_intra_doc_links)]
-#![recursion_limit="256"]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![warn(rust_2018_idioms)]
#![warn(unused_lifetimes)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+// tidy-alphabetical-end
+// tidy-alphabetical-start
+#![feature(associated_type_bounds)]
+#![feature(decl_macro)]
+#![feature(hash_raw_entry)]
+#![feature(never_type)]
+#![feature(rustc_private)]
+#![feature(trusted_len)]
+// tidy-alphabetical-end
+#![recursion_limit="256"]
extern crate rustc_apfloat;
extern crate rustc_ast;
diff --git a/compiler/rustc_codegen_llvm/src/lib.rs b/compiler/rustc_codegen_llvm/src/lib.rs
index d283299ac46b4..fa15807b6a129 100644
--- a/compiler/rustc_codegen_llvm/src/lib.rs
+++ b/compiler/rustc_codegen_llvm/src/lib.rs
@@ -5,16 +5,18 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(extern_types)]
#![feature(hash_raw_entry)]
+#![feature(impl_trait_in_assoc_type)]
#![feature(iter_intersperse)]
#![feature(let_chains)]
#![feature(never_type)]
-#![feature(impl_trait_in_assoc_type)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate rustc_macros;
diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs
index 7bed3fa615034..f6d954f5a19a3 100644
--- a/compiler/rustc_codegen_ssa/src/lib.rs
+++ b/compiler/rustc_codegen_ssa/src/lib.rs
@@ -1,4 +1,6 @@
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
#![feature(associated_type_bounds)]
#![feature(box_patterns)]
#![feature(if_let_guard)]
@@ -7,8 +9,8 @@
#![feature(never_type)]
#![feature(strict_provenance)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
//! This crate contains codegen code that is used by all codegen backends (LLVM and others).
//! The backend-agnostic functions of this crate use functions defined in various traits that
diff --git a/compiler/rustc_const_eval/src/lib.rs b/compiler/rustc_const_eval/src/lib.rs
index c126f749bf328..6c90e0bc8ac6d 100644
--- a/compiler/rustc_const_eval/src/lib.rs
+++ b/compiler/rustc_const_eval/src/lib.rs
@@ -4,23 +4,25 @@ Rust MIR: a lowered representation of Rust.
*/
+// tidy-alphabetical-start
#![deny(rustc::untranslatable_diagnostic)]
#![feature(assert_matches)]
#![feature(box_patterns)]
#![feature(decl_macro)]
#![feature(exact_size_is_empty)]
+#![feature(if_let_guard)]
#![feature(let_chains)]
#![feature(map_try_insert)]
#![feature(min_specialization)]
-#![feature(slice_ptr_get)]
-#![feature(option_get_or_insert_default)]
#![feature(never_type)]
+#![feature(option_get_or_insert_default)]
+#![feature(slice_ptr_get)]
#![feature(trait_alias)]
#![feature(trusted_len)]
#![feature(trusted_step)]
#![feature(try_blocks)]
#![feature(yeet_expr)]
-#![feature(if_let_guard)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#[macro_use]
diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs
index 33772089744d1..3578a5c1fd388 100644
--- a/compiler/rustc_data_structures/src/lib.rs
+++ b/compiler/rustc_data_structures/src/lib.rs
@@ -7,38 +7,40 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::default_hash_types)]
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![deny(unsafe_op_in_unsafe_fn)]
+#![feature(allocator_api)]
#![feature(array_windows)]
#![feature(associated_type_bounds)]
#![feature(auto_traits)]
#![feature(cell_leak)]
#![feature(core_intrinsics)]
#![feature(extend_one)]
+#![feature(get_mut_unchecked)]
#![feature(hash_raw_entry)]
#![feature(hasher_prefixfree_extras)]
+#![feature(lazy_cell)]
+#![feature(lint_reasons)]
+#![feature(macro_metavar_expr)]
#![feature(maybe_uninit_uninit_array)]
#![feature(min_specialization)]
+#![feature(negative_impls)]
#![feature(never_type)]
-#![feature(type_alias_impl_trait)]
#![feature(new_uninit)]
-#![feature(lazy_cell)]
+#![feature(ptr_alignment_type)]
#![feature(rustc_attrs)]
-#![feature(negative_impls)]
+#![feature(strict_provenance)]
#![feature(test)]
#![feature(thread_id_value)]
-#![feature(vec_into_raw_parts)]
-#![feature(allocator_api)]
-#![feature(get_mut_unchecked)]
-#![feature(lint_reasons)]
+#![feature(type_alias_impl_trait)]
#![feature(unwrap_infallible)]
-#![feature(strict_provenance)]
-#![feature(ptr_alignment_type)]
-#![feature(macro_metavar_expr)]
-#![allow(rustc::default_hash_types)]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+#![feature(vec_into_raw_parts)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
-#![deny(unsafe_op_in_unsafe_fn)]
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_error_messages/src/lib.rs b/compiler/rustc_error_messages/src/lib.rs
index 3bf15505090cf..a00bdd02df441 100644
--- a/compiler/rustc_error_messages/src/lib.rs
+++ b/compiler/rustc_error_messages/src/lib.rs
@@ -1,9 +1,11 @@
-#![feature(let_chains)]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(lazy_cell)]
+#![feature(let_chains)]
#![feature(rustc_attrs)]
#![feature(type_alias_impl_trait)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs
index 7d660d2dbaa99..0872797ab4c3b 100644
--- a/compiler/rustc_errors/src/lib.rs
+++ b/compiler/rustc_errors/src/lib.rs
@@ -3,18 +3,20 @@
//! This module contains the code for creating and emitting diagnostics.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(incomplete_features)]
#![feature(array_windows)]
+#![feature(box_patterns)]
+#![feature(error_reporter)]
#![feature(extract_if)]
#![feature(if_let_guard)]
#![feature(let_chains)]
#![feature(never_type)]
#![feature(result_option_inspect)]
#![feature(rustc_attrs)]
-#![feature(yeet_expr)]
#![feature(try_blocks)]
-#![feature(box_patterns)]
-#![feature(error_reporter)]
-#![allow(incomplete_features)]
+#![feature(yeet_expr)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_expand/src/lib.rs b/compiler/rustc_expand/src/lib.rs
index c4a9b2ace9a02..c20765c392312 100644
--- a/compiler/rustc_expand/src/lib.rs
+++ b/compiler/rustc_expand/src/lib.rs
@@ -1,3 +1,5 @@
+// tidy-alphabetical-start
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(array_windows)]
#![feature(associated_type_bounds)]
#![feature(associated_type_defaults)]
@@ -9,8 +11,8 @@
#![feature(proc_macro_span)]
#![feature(rustc_attrs)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_feature/src/lib.rs b/compiler/rustc_feature/src/lib.rs
index 69e33115922ab..c2f31045d4253 100644
--- a/compiler/rustc_feature/src/lib.rs
+++ b/compiler/rustc_feature/src/lib.rs
@@ -10,10 +10,11 @@
//! For the purpose of future feature-tracking, once a feature gate is added,
//! even if it is stabilized or removed, *do not remove it*. Instead, move the
//! symbol to the `accepted` or `removed` modules respectively.
-
-#![feature(lazy_cell)]
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(lazy_cell)]
+// tidy-alphabetical-end
mod accepted;
mod active;
diff --git a/compiler/rustc_fluent_macro/src/lib.rs b/compiler/rustc_fluent_macro/src/lib.rs
index a01643cd67d2b..0d388b7cb1d83 100644
--- a/compiler/rustc_fluent_macro/src/lib.rs
+++ b/compiler/rustc_fluent_macro/src/lib.rs
@@ -1,9 +1,11 @@
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::default_hash_types)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(proc_macro_diagnostic)]
#![feature(proc_macro_span)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
-#![allow(rustc::default_hash_types)]
+// tidy-alphabetical-end
use proc_macro::TokenStream;
diff --git a/compiler/rustc_fs_util/src/lib.rs b/compiler/rustc_fs_util/src/lib.rs
index 81d6333814544..721f06b419659 100644
--- a/compiler/rustc_fs_util/src/lib.rs
+++ b/compiler/rustc_fs_util/src/lib.rs
@@ -1,6 +1,8 @@
-#![feature(absolute_path)]
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(absolute_path)]
+// tidy-alphabetical-end
use std::ffi::CString;
use std::fs;
diff --git a/compiler/rustc_graphviz/src/lib.rs b/compiler/rustc_graphviz/src/lib.rs
index 5d86d89581755..55c78188e7453 100644
--- a/compiler/rustc_graphviz/src/lib.rs
+++ b/compiler/rustc_graphviz/src/lib.rs
@@ -273,8 +273,10 @@
html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/",
test(attr(allow(unused_variables), deny(warnings)))
)]
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-end
use LabelText::*;
diff --git a/compiler/rustc_hir/src/lib.rs b/compiler/rustc_hir/src/lib.rs
index 34214931a081d..600aa2005a2b7 100644
--- a/compiler/rustc_hir/src/lib.rs
+++ b/compiler/rustc_hir/src/lib.rs
@@ -2,6 +2,9 @@
//!
//! [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/hir.html
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(associated_type_defaults)]
#![feature(closure_track_caller)]
#![feature(const_btree_len)]
@@ -10,9 +13,8 @@
#![feature(never_type)]
#![feature(rustc_attrs)]
#![feature(variant_count)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs
index 4f95174f869e7..b73ba90328005 100644
--- a/compiler/rustc_hir_analysis/src/lib.rs
+++ b/compiler/rustc_hir_analysis/src/lib.rs
@@ -55,20 +55,22 @@ This API is completely unstable and subject to change.
*/
-#![allow(rustc::potential_query_instability)]
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
#![feature(box_patterns)]
#![feature(control_flow_enum)]
#![feature(if_let_guard)]
#![feature(is_sorted)]
#![feature(iter_intersperse)]
+#![feature(lazy_cell)]
#![feature(let_chains)]
#![feature(min_specialization)]
#![feature(never_type)]
-#![feature(lazy_cell)]
#![feature(slice_partition_dedup)]
#![feature(try_blocks)]
#![feature(type_alias_impl_trait)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#[macro_use]
diff --git a/compiler/rustc_hir_typeck/src/lib.rs b/compiler/rustc_hir_typeck/src/lib.rs
index c4d3cbc9faab0..459f3bfc6655e 100644
--- a/compiler/rustc_hir_typeck/src/lib.rs
+++ b/compiler/rustc_hir_typeck/src/lib.rs
@@ -1,11 +1,13 @@
+// tidy-alphabetical-start
+#![feature(box_patterns)]
+#![feature(control_flow_enum)]
#![feature(if_let_guard)]
#![feature(let_chains)]
-#![feature(try_blocks)]
-#![feature(never_type)]
-#![feature(box_patterns)]
#![feature(min_specialization)]
-#![feature(control_flow_enum)]
+#![feature(never_type)]
#![feature(option_as_slice)]
+#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#[macro_use]
diff --git a/compiler/rustc_incremental/src/lib.rs b/compiler/rustc_incremental/src/lib.rs
index b9171fad55ba3..fec5b058ed452 100644
--- a/compiler/rustc_incremental/src/lib.rs
+++ b/compiler/rustc_incremental/src/lib.rs
@@ -1,11 +1,13 @@
//! Support for serializing the dep-graph and reloading it.
-#![deny(missing_docs)]
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![deny(missing_docs)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(never_type)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate rustc_middle;
diff --git a/compiler/rustc_infer/src/lib.rs b/compiler/rustc_infer/src/lib.rs
index e92ba05aa6739..dd76f880feba6 100644
--- a/compiler/rustc_infer/src/lib.rs
+++ b/compiler/rustc_infer/src/lib.rs
@@ -13,15 +13,17 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
#![feature(associated_type_bounds)]
#![feature(box_patterns)]
#![feature(control_flow_enum)]
#![feature(extend_one)]
-#![feature(let_chains)]
#![feature(if_let_guard)]
+#![feature(let_chains)]
#![feature(min_specialization)]
#![feature(never_type)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "512"] // For rustdoc
#[macro_use]
diff --git a/compiler/rustc_interface/src/lib.rs b/compiler/rustc_interface/src/lib.rs
index 51bd8381e93d7..fce9025fa1c18 100644
--- a/compiler/rustc_interface/src/lib.rs
+++ b/compiler/rustc_interface/src/lib.rs
@@ -1,13 +1,15 @@
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(box_patterns)]
#![feature(decl_macro)]
#![feature(internal_output_capture)]
-#![feature(thread_spawn_unchecked)]
#![feature(lazy_cell)]
+#![feature(thread_spawn_unchecked)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_lexer/src/lib.rs b/compiler/rustc_lexer/src/lib.rs
index 43dfd34a6ff74..f2f332fe7d400 100644
--- a/compiler/rustc_lexer/src/lib.rs
+++ b/compiler/rustc_lexer/src/lib.rs
@@ -18,8 +18,10 @@
//! lexeme types.
//!
//! [`rustc_parse::lexer`]: ../rustc_parse/lexer/index.html
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-end
// We want to be able to build this crate with a stable compiler, so no
// `#![feature]` attributes should be added.
diff --git a/compiler/rustc_lint/src/lib.rs b/compiler/rustc_lint/src/lib.rs
index 42378951af36a..54e631233351c 100644
--- a/compiler/rustc_lint/src/lib.rs
+++ b/compiler/rustc_lint/src/lib.rs
@@ -25,8 +25,11 @@
//!
//! This API is completely unstable and subject to change.
-#![allow(rustc::potential_query_instability)]
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(array_windows)]
#![feature(box_patterns)]
#![feature(control_flow_enum)]
@@ -37,9 +40,8 @@
#![feature(min_specialization)]
#![feature(never_type)]
#![feature(rustc_attrs)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_lint_defs/src/lib.rs b/compiler/rustc_lint_defs/src/lib.rs
index f350957f72f1c..aa1e89fe12f41 100644
--- a/compiler/rustc_lint_defs/src/lib.rs
+++ b/compiler/rustc_lint_defs/src/lib.rs
@@ -1,6 +1,8 @@
-#![feature(min_specialization)]
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(min_specialization)]
+// tidy-alphabetical-end
#[macro_use]
extern crate rustc_macros;
diff --git a/compiler/rustc_macros/src/lib.rs b/compiler/rustc_macros/src/lib.rs
index f4593d0fe736d..164092468a946 100644
--- a/compiler/rustc_macros/src/lib.rs
+++ b/compiler/rustc_macros/src/lib.rs
@@ -1,12 +1,14 @@
+// tidy-alphabetical-start
+#![allow(rustc::default_hash_types)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(allow_internal_unstable)]
#![feature(if_let_guard)]
#![feature(let_chains)]
#![feature(never_type)]
#![feature(proc_macro_diagnostic)]
#![feature(proc_macro_span)]
-#![allow(rustc::default_hash_types)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
#![recursion_limit = "128"]
diff --git a/compiler/rustc_metadata/src/lib.rs b/compiler/rustc_metadata/src/lib.rs
index 87373d9974357..0c18200f76de2 100644
--- a/compiler/rustc_metadata/src/lib.rs
+++ b/compiler/rustc_metadata/src/lib.rs
@@ -1,20 +1,22 @@
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(decl_macro)]
#![feature(extract_if)]
#![feature(generators)]
#![feature(iter_from_generator)]
#![feature(let_chains)]
-#![feature(proc_macro_internals)]
#![feature(macro_metavar_expr)]
#![feature(min_specialization)]
+#![feature(never_type)]
+#![feature(proc_macro_internals)]
#![feature(slice_as_chunks)]
#![feature(trusted_len)]
#![feature(try_blocks)]
-#![feature(never_type)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
extern crate proc_macro;
diff --git a/compiler/rustc_middle/src/lib.rs b/compiler/rustc_middle/src/lib.rs
index f5576b59571f5..9546bba6e7713 100644
--- a/compiler/rustc_middle/src/lib.rs
+++ b/compiler/rustc_middle/src/lib.rs
@@ -23,45 +23,47 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
#![feature(allocator_api)]
#![feature(array_windows)]
#![feature(assert_matches)]
+#![feature(associated_type_bounds)]
#![feature(box_patterns)]
+#![feature(const_option)]
+#![feature(control_flow_enum)]
#![feature(core_intrinsics)]
+#![feature(decl_macro)]
#![feature(discriminant_kind)]
#![feature(exhaustive_patterns)]
+#![feature(extern_types)]
+#![feature(extract_if)]
#![feature(generators)]
#![feature(get_mut_unchecked)]
#![feature(if_let_guard)]
#![feature(inline_const)]
+#![feature(intra_doc_pointers)]
#![feature(iter_from_generator)]
+#![feature(let_chains)]
#![feature(local_key_cell_methods)]
+#![feature(macro_metavar_expr)]
+#![feature(min_specialization)]
#![feature(negative_impls)]
#![feature(never_type)]
-#![feature(extern_types)]
#![feature(new_uninit)]
-#![feature(let_chains)]
-#![feature(min_specialization)]
-#![feature(trusted_len)]
-#![feature(type_alias_impl_trait)]
-#![feature(strict_provenance)]
-#![feature(associated_type_bounds)]
+#![feature(nonzero_ops)]
+#![feature(ptr_alignment_type)]
+#![feature(result_option_inspect)]
#![feature(rustc_attrs)]
-#![feature(control_flow_enum)]
+#![feature(strict_provenance)]
+#![feature(trait_alias)]
#![feature(trait_upcasting)]
+#![feature(trusted_len)]
#![feature(trusted_step)]
#![feature(try_blocks)]
#![feature(try_reserve_kind)]
-#![feature(nonzero_ops)]
-#![feature(decl_macro)]
-#![feature(extract_if)]
-#![feature(intra_doc_pointers)]
+#![feature(type_alias_impl_trait)]
#![feature(yeet_expr)]
-#![feature(result_option_inspect)]
-#![feature(const_option)]
-#![feature(trait_alias)]
-#![feature(ptr_alignment_type)]
-#![feature(macro_metavar_expr)]
+// tidy-alphabetical-end
#![recursion_limit = "512"]
#![allow(rustc::potential_query_instability)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/compiler/rustc_mir_build/src/lib.rs b/compiler/rustc_mir_build/src/lib.rs
index 099fefbf06871..6f24e9ddc6331 100644
--- a/compiler/rustc_mir_build/src/lib.rs
+++ b/compiler/rustc_mir_build/src/lib.rs
@@ -1,6 +1,7 @@
//! Construction of MIR from HIR.
//!
//! This crate also contains the match exhaustiveness and usefulness checking.
+// tidy-alphabetical-start
#![allow(rustc::potential_query_instability)]
#![feature(assert_matches)]
#![feature(associated_type_bounds)]
@@ -9,6 +10,7 @@
#![feature(let_chains)]
#![feature(min_specialization)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#[macro_use]
diff --git a/compiler/rustc_mir_dataflow/src/lib.rs b/compiler/rustc_mir_dataflow/src/lib.rs
index 900d438f8d538..6b01d3f00c2f3 100644
--- a/compiler/rustc_mir_dataflow/src/lib.rs
+++ b/compiler/rustc_mir_dataflow/src/lib.rs
@@ -1,3 +1,6 @@
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(associated_type_defaults)]
#![feature(box_patterns)]
#![feature(exact_size_is_empty)]
@@ -5,9 +8,8 @@
#![feature(min_specialization)]
#![feature(stmt_expr_attributes)]
#![feature(trusted_step)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs
index bf798adee199e..e61c54eededf6 100644
--- a/compiler/rustc_mir_transform/src/lib.rs
+++ b/compiler/rustc_mir_transform/src/lib.rs
@@ -1,7 +1,9 @@
+// tidy-alphabetical-start
#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(box_patterns)]
+#![feature(if_let_guard)]
#![feature(is_sorted)]
#![feature(let_chains)]
#![feature(map_try_insert)]
@@ -11,7 +13,7 @@
#![feature(trusted_step)]
#![feature(try_blocks)]
#![feature(yeet_expr)]
-#![feature(if_let_guard)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#[macro_use]
diff --git a/compiler/rustc_monomorphize/src/lib.rs b/compiler/rustc_monomorphize/src/lib.rs
index 5f05020acae91..e273312ae63cf 100644
--- a/compiler/rustc_monomorphize/src/lib.rs
+++ b/compiler/rustc_monomorphize/src/lib.rs
@@ -1,9 +1,11 @@
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(array_windows)]
#![feature(is_sorted)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_parse/src/lib.rs b/compiler/rustc_parse/src/lib.rs
index 892be36aae770..1b64833c739b0 100644
--- a/compiler/rustc_parse/src/lib.rs
+++ b/compiler/rustc_parse/src/lib.rs
@@ -1,5 +1,6 @@
//! The main parser interface.
+// tidy-alphabetical-start
#![feature(array_windows)]
#![feature(box_patterns)]
#![feature(if_let_guard)]
@@ -7,6 +8,7 @@
#![feature(let_chains)]
#![feature(never_type)]
#![feature(rustc_attrs)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/compiler/rustc_parse_format/src/lib.rs b/compiler/rustc_parse_format/src/lib.rs
index 88452ccdf052e..3b113e7bfaa98 100644
--- a/compiler/rustc_parse_format/src/lib.rs
+++ b/compiler/rustc_parse_format/src/lib.rs
@@ -9,8 +9,10 @@
html_playground_url = "https://play.rust-lang.org/",
test(attr(deny(warnings)))
)]
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-end
// We want to be able to build this crate with a stable compiler, so no
// `#![feature]` attributes should be added.
diff --git a/compiler/rustc_passes/src/lib.rs b/compiler/rustc_passes/src/lib.rs
index 0da4b29464862..f11880957b6f2 100644
--- a/compiler/rustc_passes/src/lib.rs
+++ b/compiler/rustc_passes/src/lib.rs
@@ -4,16 +4,18 @@
//!
//! This API is completely unstable and subject to change.
-#![allow(rustc::potential_query_instability)]
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(iter_intersperse)]
#![feature(let_chains)]
#![feature(map_try_insert)]
#![feature(min_specialization)]
#![feature(try_blocks)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate rustc_middle;
diff --git a/compiler/rustc_privacy/src/lib.rs b/compiler/rustc_privacy/src/lib.rs
index 30a4235d37145..7f550c6413f45 100644
--- a/compiler/rustc_privacy/src/lib.rs
+++ b/compiler/rustc_privacy/src/lib.rs
@@ -1,11 +1,13 @@
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(associated_type_defaults)]
+#![feature(let_chains)]
#![feature(rustc_private)]
#![feature(try_blocks)]
-#![feature(let_chains)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_query_impl/src/lib.rs b/compiler/rustc_query_impl/src/lib.rs
index 53005ede84378..add3cc1cf124a 100644
--- a/compiler/rustc_query_impl/src/lib.rs
+++ b/compiler/rustc_query_impl/src/lib.rs
@@ -3,14 +3,17 @@
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
// this shouldn't be necessary, but the check for `&mut _` is too naive and denies returning a function pointer that takes a mut ref
#![feature(const_mut_refs)]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![allow(unused_parens)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(const_refs_to_cell)]
#![feature(min_specialization)]
#![feature(never_type)]
#![feature(rustc_attrs)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability, unused_parens)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_query_system/src/lib.rs b/compiler/rustc_query_system/src/lib.rs
index 8c9e9cfad6024..82d8be5922f8f 100644
--- a/compiler/rustc_query_system/src/lib.rs
+++ b/compiler/rustc_query_system/src/lib.rs
@@ -1,12 +1,14 @@
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(assert_matches)]
#![feature(core_intrinsics)]
-#![feature(hash_raw_entry)]
-#![feature(min_specialization)]
#![feature(extern_types)]
+#![feature(hash_raw_entry)]
#![feature(let_chains)]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+#![feature(min_specialization)]
+// tidy-alphabetical-end
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs
index e403386e60c25..52d9b959a9b7d 100644
--- a/compiler/rustc_resolve/src/lib.rs
+++ b/compiler/rustc_resolve/src/lib.rs
@@ -7,6 +7,9 @@
//! Type-relative name resolution (methods, fields, associated items) happens in `rustc_hir_analysis`.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![allow(rustdoc::private_intra_doc_links)]
#![feature(assert_matches)]
#![feature(box_patterns)]
#![feature(extract_if)]
@@ -15,9 +18,8 @@
#![feature(let_chains)]
#![feature(never_type)]
#![feature(rustc_attrs)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustdoc::private_intra_doc_links)]
-#![allow(rustc::potential_query_instability)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_serialize/src/lib.rs b/compiler/rustc_serialize/src/lib.rs
index ce8503918b4f2..d7975e8eb87f3 100644
--- a/compiler/rustc_serialize/src/lib.rs
+++ b/compiler/rustc_serialize/src/lib.rs
@@ -9,18 +9,20 @@ Core encoding and decoding interfaces.
html_playground_url = "https://play.rust-lang.org/",
test(attr(allow(unused_variables), deny(warnings)))
)]
-#![feature(never_type)]
+// tidy-alphabetical-start
+#![allow(rustc::internal)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(allocator_api)]
#![feature(associated_type_bounds)]
-#![feature(min_specialization)]
#![feature(core_intrinsics)]
#![feature(maybe_uninit_slice)]
+#![feature(min_specialization)]
+#![feature(never_type)]
#![feature(new_uninit)]
-#![feature(allocator_api)]
#![feature(ptr_sub_ptr)]
+// tidy-alphabetical-end
#![cfg_attr(test, feature(test))]
-#![allow(rustc::internal)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
pub use self::serialize::{Decodable, Decoder, Encodable, Encoder};
diff --git a/compiler/rustc_session/src/lib.rs b/compiler/rustc_session/src/lib.rs
index a270817f3109b..221b701fb304b 100644
--- a/compiler/rustc_session/src/lib.rs
+++ b/compiler/rustc_session/src/lib.rs
@@ -1,15 +1,17 @@
+// tidy-alphabetical-start
+#![allow(rustc::potential_query_instability)]
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(if_let_guard)]
+#![feature(lazy_cell)]
#![feature(let_chains)]
+#![feature(map_many_mut)]
#![feature(min_specialization)]
#![feature(never_type)]
-#![feature(lazy_cell)]
#![feature(option_get_or_insert_default)]
#![feature(rustc_attrs)]
-#![feature(map_many_mut)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_smir/src/lib.rs b/compiler/rustc_smir/src/lib.rs
index 6ebba56c76d2a..daace1aef9a56 100644
--- a/compiler/rustc_smir/src/lib.rs
+++ b/compiler/rustc_smir/src/lib.rs
@@ -11,10 +11,12 @@
test(attr(allow(unused_variables), deny(warnings)))
)]
#![cfg_attr(not(feature = "default"), feature(rustc_private))]
+// tidy-alphabetical-start
+#![feature(intra_doc_pointers)]
#![feature(local_key_cell_methods)]
#![feature(ptr_metadata)]
-#![feature(type_alias_impl_trait)] // Used to define opaque types.
-#![feature(intra_doc_pointers)]
+#![feature(type_alias_impl_trait)]
+// tidy-alphabetical-end
// Declare extern rustc_* crates to enable building this crate separately from the compiler.
#[cfg(not(feature = "default"))]
diff --git a/compiler/rustc_span/src/lib.rs b/compiler/rustc_span/src/lib.rs
index afee5c0fe2b4f..db59e4dcc0eb1 100644
--- a/compiler/rustc_span/src/lib.rs
+++ b/compiler/rustc_span/src/lib.rs
@@ -14,15 +14,17 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(array_windows)]
#![feature(if_let_guard)]
-#![feature(negative_impls)]
-#![feature(min_specialization)]
-#![feature(rustc_attrs)]
#![feature(let_chains)]
+#![feature(min_specialization)]
+#![feature(negative_impls)]
#![feature(round_char_boundary)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+#![feature(rustc_attrs)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/compiler/rustc_symbol_mangling/src/lib.rs b/compiler/rustc_symbol_mangling/src/lib.rs
index 74538e9f5a3fc..f0867d469c959 100644
--- a/compiler/rustc_symbol_mangling/src/lib.rs
+++ b/compiler/rustc_symbol_mangling/src/lib.rs
@@ -88,11 +88,13 @@
//! DefPaths which are much more robust in the face of changes to the code base.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
-#![feature(never_type)]
-#![recursion_limit = "256"]
+// tidy-alphabetical-start
#![allow(rustc::potential_query_instability)]
-#![deny(rustc::untranslatable_diagnostic)]
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(never_type)]
+// tidy-alphabetical-end
+#![recursion_limit = "256"]
#[macro_use]
extern crate rustc_middle;
diff --git a/compiler/rustc_target/src/lib.rs b/compiler/rustc_target/src/lib.rs
index b52002b123968..95d300062d199 100644
--- a/compiler/rustc_target/src/lib.rs
+++ b/compiler/rustc_target/src/lib.rs
@@ -8,6 +8,9 @@
//! LLVM.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(assert_matches)]
#![feature(associated_type_bounds)]
#![feature(exhaustive_patterns)]
@@ -17,8 +20,7 @@
#![feature(never_type)]
#![feature(rustc_attrs)]
#![feature(step_trait)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
use std::path::{Path, PathBuf};
diff --git a/compiler/rustc_trait_selection/src/lib.rs b/compiler/rustc_trait_selection/src/lib.rs
index 56d37d58de752..503e989de874d 100644
--- a/compiler/rustc_trait_selection/src/lib.rs
+++ b/compiler/rustc_trait_selection/src/lib.rs
@@ -11,16 +11,18 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
#![feature(associated_type_bounds)]
#![feature(box_patterns)]
#![feature(control_flow_enum)]
#![feature(extract_if)]
-#![feature(let_chains)]
#![feature(if_let_guard)]
+#![feature(let_chains)]
+#![feature(min_specialization)]
#![feature(never_type)]
#![feature(result_option_inspect)]
#![feature(type_alias_impl_trait)]
-#![feature(min_specialization)]
+// tidy-alphabetical-end
#![recursion_limit = "512"] // For rustdoc
#[macro_use]
diff --git a/compiler/rustc_traits/src/lib.rs b/compiler/rustc_traits/src/lib.rs
index dfa5814219bc2..e9f7c6433293a 100644
--- a/compiler/rustc_traits/src/lib.rs
+++ b/compiler/rustc_traits/src/lib.rs
@@ -1,8 +1,9 @@
//! Queries that are independent from the main solver code.
-
-#![deny(rustc::untranslatable_diagnostic)]
+// tidy-alphabetical-start
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(let_chains)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#[macro_use]
diff --git a/compiler/rustc_transmute/src/lib.rs b/compiler/rustc_transmute/src/lib.rs
index 05ad4a4a12ab3..a696b55d58b3f 100644
--- a/compiler/rustc_transmute/src/lib.rs
+++ b/compiler/rustc_transmute/src/lib.rs
@@ -1,7 +1,12 @@
-#![feature(alloc_layout_extra, decl_macro, iterator_try_reduce, never_type)]
+// tidy-alphabetical-start
#![allow(dead_code, unused_variables)]
-#![deny(rustc::untranslatable_diagnostic)]
#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
+#![feature(alloc_layout_extra)]
+#![feature(decl_macro)]
+#![feature(iterator_try_reduce)]
+#![feature(never_type)]
+// tidy-alphabetical-end
#[macro_use]
extern crate tracing;
diff --git a/compiler/rustc_ty_utils/src/lib.rs b/compiler/rustc_ty_utils/src/lib.rs
index 147b600f7ba52..5052b775d54b2 100644
--- a/compiler/rustc_ty_utils/src/lib.rs
+++ b/compiler/rustc_ty_utils/src/lib.rs
@@ -5,15 +5,17 @@
//! This API is completely unstable and subject to change.
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(assert_matches)]
+#![feature(box_patterns)]
+#![feature(if_let_guard)]
#![feature(iterator_try_collect)]
#![feature(let_chains)]
-#![feature(if_let_guard)]
#![feature(never_type)]
-#![feature(box_patterns)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
#[macro_use]
extern crate rustc_middle;
diff --git a/compiler/rustc_type_ir/src/lib.rs b/compiler/rustc_type_ir/src/lib.rs
index b0f8ea7a05da5..8c96f10ea7d83 100644
--- a/compiler/rustc_type_ir/src/lib.rs
+++ b/compiler/rustc_type_ir/src/lib.rs
@@ -1,11 +1,13 @@
+// tidy-alphabetical-start
+#![deny(rustc::diagnostic_outside_of_impl)]
+#![deny(rustc::untranslatable_diagnostic)]
#![feature(associated_type_defaults)]
#![feature(fmt_helpers_for_derive)]
#![feature(min_specialization)]
#![feature(never_type)]
#![feature(rustc_attrs)]
#![feature(unwrap_infallible)]
-#![deny(rustc::untranslatable_diagnostic)]
-#![deny(rustc::diagnostic_outside_of_impl)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[macro_use]
diff --git a/library/alloc/benches/lib.rs b/library/alloc/benches/lib.rs
index 638f343fb244b..5d3af2ecc1389 100644
--- a/library/alloc/benches/lib.rs
+++ b/library/alloc/benches/lib.rs
@@ -1,12 +1,14 @@
// Disabling on android for the time being
// See https://github.com/rust-lang/rust/issues/73535#event-3477699747
#![cfg(not(target_os = "android"))]
+// tidy-alphabetical-start
#![feature(btree_extract_if)]
#![feature(iter_next_chunk)]
#![feature(repr_simd)]
#![feature(slice_partition_dedup)]
#![feature(strict_provenance)]
#![feature(test)]
+// tidy-alphabetical-end
#![deny(fuzzy_provenance_casts)]
extern crate test;
diff --git a/library/alloc/tests/lib.rs b/library/alloc/tests/lib.rs
index aa7a331b368be..d9665bc456572 100644
--- a/library/alloc/tests/lib.rs
+++ b/library/alloc/tests/lib.rs
@@ -1,47 +1,49 @@
-#![feature(allocator_api)]
+// tidy-alphabetical-start
+#![deny(fuzzy_provenance_casts)]
+#![deny(unsafe_op_in_unsafe_fn)]
#![feature(alloc_layout_extra)]
+#![feature(allocator_api)]
#![feature(assert_matches)]
+#![feature(associated_type_bounds)]
+#![feature(binary_heap_as_slice)]
+#![feature(binary_heap_drain_sorted)]
+#![feature(binary_heap_into_iter_sorted)]
#![feature(btree_extract_if)]
-#![feature(cow_is_borrowed)]
+#![feature(const_btree_len)]
#![feature(const_cow_is_borrowed)]
#![feature(const_heap)]
#![feature(const_mut_refs)]
-#![feature(const_slice_from_raw_parts_mut)]
#![feature(const_ptr_write)]
+#![feature(const_slice_from_raw_parts_mut)]
+#![feature(const_str_from_utf8)]
+#![feature(const_trait_impl)]
#![feature(const_try)]
#![feature(core_intrinsics)]
-#![feature(extract_if)]
+#![feature(cow_is_borrowed)]
+#![feature(drain_keep_rest)]
#![feature(exact_size_is_empty)]
+#![feature(extract_if)]
+#![feature(inplace_iteration)]
+#![feature(iter_advance_by)]
+#![feature(iter_next_chunk)]
#![feature(linked_list_cursors)]
#![feature(map_try_insert)]
#![feature(new_uninit)]
+#![feature(panic_update_hook)]
#![feature(pattern)]
-#![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)]
-#![feature(binary_heap_as_slice)]
-#![feature(inplace_iteration)]
-#![feature(iter_advance_by)]
-#![feature(iter_next_chunk)]
+#![feature(pointer_is_aligned)]
#![feature(round_char_boundary)]
+#![feature(slice_flatten)]
#![feature(slice_group_by)]
#![feature(slice_partition_dedup)]
+#![feature(slice_ptr_get)]
+#![feature(strict_provenance)]
#![feature(string_remove_matches)]
-#![feature(const_btree_len)]
-#![feature(const_trait_impl)]
-#![feature(const_str_from_utf8)]
-#![feature(panic_update_hook)]
-#![feature(pointer_is_aligned)]
-#![feature(slice_flatten)]
#![feature(thin_box)]
-#![feature(strict_provenance)]
-#![feature(drain_keep_rest)]
-#![deny(fuzzy_provenance_casts)]
-#![deny(unsafe_op_in_unsafe_fn)]
+#![feature(trusted_len)]
+#![feature(try_reserve_kind)]
+#![feature(unboxed_closures)]
+// tidy-alphabetical-end
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
diff --git a/library/core/benches/lib.rs b/library/core/benches/lib.rs
index 74ef0949b8af2..1a43f22028319 100644
--- a/library/core/benches/lib.rs
+++ b/library/core/benches/lib.rs
@@ -1,10 +1,12 @@
// wasm32 does not support benches (no time).
#![cfg(not(target_arch = "wasm32"))]
+// tidy-alphabetical-start
#![feature(flt2dec)]
-#![feature(test)]
-#![feature(trusted_random_access)]
#![feature(iter_array_chunks)]
#![feature(iter_next_chunk)]
+#![feature(test)]
+#![feature(trusted_random_access)]
+// tidy-alphabetical-end
extern crate test;
diff --git a/library/core/tests/lib.rs b/library/core/tests/lib.rs
index 897a5e9b87063..1f403e3e437f4 100644
--- a/library/core/tests/lib.rs
+++ b/library/core/tests/lib.rs
@@ -1,117 +1,119 @@
+// tidy-alphabetical-start
+#![deny(fuzzy_provenance_casts)]
+#![deny(unsafe_op_in_unsafe_fn)]
#![feature(alloc_layout_extra)]
#![feature(array_chunks)]
#![feature(array_methods)]
+#![feature(array_try_from_fn)]
#![feature(array_windows)]
#![feature(bigint_helper_methods)]
#![feature(cell_update)]
+#![feature(const_align_of_val_raw)]
#![feature(const_align_offset)]
+#![feature(const_array_from_ref)]
#![feature(const_assume)]
-#![feature(const_align_of_val_raw)]
#![feature(const_black_box)]
#![feature(const_caller_location)]
#![feature(const_cell_into_inner)]
#![feature(const_hash)]
#![feature(const_heap)]
+#![feature(const_ip)]
+#![feature(const_ipv4)]
+#![feature(const_ipv6)]
+#![feature(const_likely)]
+#![feature(const_location_fields)]
#![feature(const_maybe_uninit_as_mut_ptr)]
#![feature(const_maybe_uninit_assume_init_read)]
+#![feature(const_mut_refs)]
#![feature(const_nonnull_new)]
+#![feature(const_option)]
+#![feature(const_option_ext)]
+#![feature(const_pin)]
#![feature(const_pointer_byte_offsets)]
#![feature(const_pointer_is_aligned)]
#![feature(const_ptr_as_ref)]
#![feature(const_ptr_write)]
+#![feature(const_result)]
+#![feature(const_slice_from_ref)]
#![feature(const_trait_impl)]
-#![feature(const_likely)]
-#![feature(const_location_fields)]
+#![feature(const_waker)]
#![feature(core_intrinsics)]
#![feature(core_private_bignum)]
#![feature(core_private_diy_float)]
#![feature(dec2flt)]
#![feature(div_duration)]
-#![feature(duration_consts_float)]
#![feature(duration_constants)]
+#![feature(duration_consts_float)]
#![feature(exact_size_is_empty)]
#![feature(extern_types)]
+#![feature(float_minimum_maximum)]
#![feature(flt2dec)]
#![feature(fmt_internals)]
-#![feature(float_minimum_maximum)]
#![feature(future_join)]
#![feature(generic_assert_internals)]
-#![feature(array_try_from_fn)]
+#![feature(get_many_mut)]
#![feature(hasher_prefixfree_extras)]
#![feature(hashmap_internals)]
-#![feature(try_find)]
#![feature(inline_const)]
-#![feature(is_sorted)]
-#![feature(layout_for_ptr)]
-#![feature(pattern)]
-#![feature(sort_internals)]
-#![feature(slice_take)]
-#![feature(slice_from_ptr_range)]
-#![feature(split_as_slice)]
-#![feature(maybe_uninit_uninit_array)]
-#![feature(maybe_uninit_write_slice)]
-#![feature(maybe_uninit_uninit_array_transpose)]
-#![feature(min_specialization)]
-#![feature(numfmt)]
-#![feature(num_midpoint)]
-#![feature(step_trait)]
-#![feature(str_internals)]
-#![feature(std_internals)]
-#![feature(test)]
-#![feature(trusted_len)]
-#![feature(try_blocks)]
-#![feature(try_trait_v2)]
-#![feature(slice_internals)]
-#![feature(slice_partition_dedup)]
+#![feature(int_roundings)]
#![feature(ip)]
#![feature(ip_in_core)]
+#![feature(is_ascii_octdigit)]
+#![feature(is_sorted)]
#![feature(iter_advance_by)]
#![feature(iter_array_chunks)]
#![feature(iter_collect_into)]
-#![feature(iter_partition_in_place)]
#![feature(iter_intersperse)]
#![feature(iter_is_partitioned)]
#![feature(iter_next_chunk)]
#![feature(iter_order_by)]
+#![feature(iter_partition_in_place)]
#![feature(iter_repeat_n)]
#![feature(iterator_try_collect)]
#![feature(iterator_try_reduce)]
-#![feature(const_ip)]
-#![feature(const_ipv4)]
-#![feature(const_ipv6)]
-#![feature(const_mut_refs)]
-#![feature(const_pin)]
-#![feature(const_waker)]
+#![feature(layout_for_ptr)]
+#![feature(lazy_cell)]
+#![feature(maybe_uninit_uninit_array)]
+#![feature(maybe_uninit_uninit_array_transpose)]
+#![feature(maybe_uninit_write_slice)]
+#![feature(min_specialization)]
#![feature(never_type)]
-#![feature(unwrap_infallible)]
+#![feature(num_midpoint)]
+#![feature(numfmt)]
+#![feature(offset_of)]
+#![feature(pattern)]
#![feature(pointer_byte_offsets)]
#![feature(pointer_is_aligned)]
#![feature(portable_simd)]
+#![feature(provide_any)]
#![feature(ptr_metadata)]
-#![feature(lazy_cell)]
-#![feature(unsized_tuple_coercion)]
-#![feature(const_option)]
-#![feature(const_option_ext)]
-#![feature(const_result)]
-#![cfg_attr(target_has_atomic = "128", feature(integer_atomics))]
-#![feature(int_roundings)]
+#![feature(slice_flatten)]
+#![feature(slice_from_ptr_range)]
#![feature(slice_group_by)]
+#![feature(slice_internals)]
+#![feature(slice_partition_dedup)]
+#![feature(slice_take)]
+#![feature(sort_internals)]
#![feature(split_array)]
+#![feature(split_as_slice)]
+#![feature(std_internals)]
+#![feature(step_trait)]
+#![feature(str_internals)]
#![feature(strict_provenance)]
#![feature(strict_provenance_atomic_ptr)]
+#![feature(test)]
+#![feature(trusted_len)]
#![feature(trusted_random_access)]
+#![feature(try_blocks)]
+#![feature(try_find)]
+#![feature(try_trait_v2)]
#![feature(unsize)]
-#![feature(const_array_from_ref)]
-#![feature(const_slice_from_ref)]
-#![feature(waker_getters)]
-#![feature(slice_flatten)]
-#![feature(provide_any)]
+#![feature(unsized_tuple_coercion)]
+#![feature(unwrap_infallible)]
#![feature(utf8_chunks)]
-#![feature(is_ascii_octdigit)]
-#![feature(get_many_mut)]
-#![feature(offset_of)]
-#![deny(unsafe_op_in_unsafe_fn)]
-#![deny(fuzzy_provenance_casts)]
+#![feature(waker_getters)]
+// tidy-alphabetical-end
+#![cfg_attr(target_has_atomic = "128", feature(integer_atomics))]
extern crate test;
diff --git a/library/panic_abort/src/lib.rs b/library/panic_abort/src/lib.rs
index 76b3591965851..d8b4e02cd9154 100644
--- a/library/panic_abort/src/lib.rs
+++ b/library/panic_abort/src/lib.rs
@@ -8,12 +8,14 @@
#![doc(issue_tracker_base_url = "https://github.com/rust-lang/rust/issues/")]
#![panic_runtime]
#![allow(unused_features)]
+// tidy-alphabetical-start
+#![feature(c_unwind)]
#![feature(core_intrinsics)]
#![feature(panic_runtime)]
-#![feature(std_internals)]
-#![feature(staged_api)]
#![feature(rustc_attrs)]
-#![feature(c_unwind)]
+#![feature(staged_api)]
+#![feature(std_internals)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
#[cfg(target_os = "android")]
diff --git a/library/panic_unwind/src/lib.rs b/library/panic_unwind/src/lib.rs
index 009014de5c2c4..60aa498746b26 100644
--- a/library/panic_unwind/src/lib.rs
+++ b/library/panic_unwind/src/lib.rs
@@ -14,16 +14,18 @@
#![no_std]
#![unstable(feature = "panic_unwind", issue = "32837")]
#![doc(issue_tracker_base_url = "https://github.com/rust-lang/rust/issues/")]
+// tidy-alphabetical-start
+#![feature(c_unwind)]
#![feature(core_intrinsics)]
#![feature(lang_items)]
+#![feature(panic_runtime)]
#![feature(panic_unwind)]
+#![feature(rustc_attrs)]
#![feature(staged_api)]
#![feature(std_internals)]
+// tidy-alphabetical-end
#![cfg_attr(bootstrap, feature(abi_thiscall))]
-#![feature(rustc_attrs)]
#![panic_runtime]
-#![feature(panic_runtime)]
-#![feature(c_unwind)]
// `real_imp` is unused with Miri, so silence warnings.
#![cfg_attr(miri, allow(dead_code))]
#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/library/portable-simd/crates/core_simd/src/lib.rs b/library/portable-simd/crates/core_simd/src/lib.rs
index fde406bda7060..829fd7c4ef6ec 100644
--- a/library/portable-simd/crates/core_simd/src/lib.rs
+++ b/library/portable-simd/crates/core_simd/src/lib.rs
@@ -1,19 +1,19 @@
#![no_std]
-#![feature(
- const_refs_to_cell,
- const_maybe_uninit_as_mut_ptr,
- const_mut_refs,
- convert_float_to_int,
- decl_macro,
- intra_doc_pointers,
- platform_intrinsics,
- repr_simd,
- simd_ffi,
- staged_api,
- stdsimd,
- strict_provenance,
- ptr_metadata
-)]
+// tidy-alphabetical-start
+#![feature(const_maybe_uninit_as_mut_ptr)]
+#![feature(const_mut_refs)]
+#![feature(const_refs_to_cell)]
+#![feature(convert_float_to_int)]
+#![feature(decl_macro)]
+#![feature(intra_doc_pointers)]
+#![feature(platform_intrinsics)]
+#![feature(ptr_metadat)]
+#![feature(repr_simd)]
+#![feature(simd_ffi)]
+#![feature(staged_api)]
+#![feature(stdsimd)]
+#![feature(strict_provenance)]
+// tidy-alphabetical-end
#![cfg_attr(feature = "generic_const_exprs", feature(generic_const_exprs))]
#![cfg_attr(feature = "generic_const_exprs", allow(incomplete_features))]
#![warn(missing_docs, clippy::missing_inline_in_public_items)] // basically all items, really
diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs
index be89afa32b33d..5addfe0b39c27 100644
--- a/library/proc_macro/src/lib.rs
+++ b/library/proc_macro/src/lib.rs
@@ -20,18 +20,20 @@
// This library is copied into rust-analyzer to allow loading rustc compiled proc macros.
// Please avoid unstable features where possible to minimize the amount of changes necessary
// to make it compile with rust-analyzer on stable.
-#![feature(rustc_allow_const_fn_unstable)]
-#![feature(staged_api)]
+// tidy-alphabetical-start
#![feature(allow_internal_unstable)]
#![feature(decl_macro)]
#![feature(local_key_cell_methods)]
#![feature(maybe_uninit_write_slice)]
+#![feature(min_specialization)]
#![feature(negative_impls)]
#![feature(new_uninit)]
#![feature(restricted_std)]
+#![feature(rustc_allow_const_fn_unstable)]
#![feature(rustc_attrs)]
-#![feature(min_specialization)]
+#![feature(staged_api)]
#![feature(strict_provenance)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/library/profiler_builtins/src/lib.rs b/library/profiler_builtins/src/lib.rs
index a81d0a63547f8..1eecc3545b01e 100644
--- a/library/profiler_builtins/src/lib.rs
+++ b/library/profiler_builtins/src/lib.rs
@@ -1,11 +1,13 @@
#![no_std]
-#![feature(profiler_runtime)]
#![profiler_runtime]
#![unstable(
feature = "profiler_runtime_lib",
reason = "internal implementation detail of rustc right now",
issue = "none"
)]
+// tidy-alphabetical-start
#![allow(unused_features)]
-#![cfg_attr(not(bootstrap), allow(internal_features))]
+#![feature(profiler_runtime)]
#![feature(staged_api)]
+// tidy-alphabetical-end
+#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/library/test/src/lib.rs b/library/test/src/lib.rs
index 64d10dd5712ab..9e431ff0720f5 100644
--- a/library/test/src/lib.rs
+++ b/library/test/src/lib.rs
@@ -16,11 +16,13 @@
#![unstable(feature = "test", issue = "50297")]
#![doc(test(attr(deny(warnings))))]
+// tidy-alphabetical-start
#![feature(internal_output_capture)]
-#![feature(staged_api)]
-#![feature(process_exitcode_internals)]
#![feature(panic_can_unwind)]
+#![feature(process_exitcode_internals)]
+#![feature(staged_api)]
#![feature(test)]
+// tidy-alphabetical-end
#![cfg_attr(not(bootstrap), allow(internal_features))]
// Public reexports
diff --git a/library/unwind/src/lib.rs b/library/unwind/src/lib.rs
index 0b4daeafe46df..8f1b1318aa715 100644
--- a/library/unwind/src/lib.rs
+++ b/library/unwind/src/lib.rs
@@ -1,9 +1,11 @@
#![no_std]
#![unstable(feature = "panic_unwind", issue = "32837")]
-#![feature(link_cfg)]
-#![feature(staged_api)]
+// tidy-alphabetical-start
#![feature(c_unwind)]
#![feature(cfg_target_abi)]
+#![feature(link_cfg)]
+#![feature(staged_api)]
+// tidy-alphabetical-end
#![cfg_attr(not(target_env = "msvc"), feature(libc))]
#![cfg_attr(not(bootstrap), allow(internal_features))]
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs
index 36d087a7d5be6..4b46314dfdf68 100644
--- a/src/librustdoc/lib.rs
+++ b/src/librustdoc/lib.rs
@@ -2,7 +2,7 @@
html_root_url = "https://doc.rust-lang.org/nightly/",
html_playground_url = "https://play.rust-lang.org/"
)]
-#![feature(rustc_private)]
+// tidy-alphabetical-start
#![feature(array_methods)]
#![feature(assert_matches)]
#![feature(box_patterns)]
@@ -12,9 +12,11 @@
#![feature(let_chains)]
#![feature(never_type)]
#![feature(round_char_boundary)]
+#![feature(rustc_private)]
#![feature(test)]
#![feature(type_alias_impl_trait)]
#![feature(type_ascription)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
#![warn(rustc::internal)]
#![allow(clippy::collapsible_if, clippy::collapsible_else_if)]
diff --git a/src/tools/clippy/clippy_dev/src/lib.rs b/src/tools/clippy/clippy_dev/src/lib.rs
index c4ae4f0e2bdd6..f6d797c2c3d0f 100644
--- a/src/tools/clippy/clippy_dev/src/lib.rs
+++ b/src/tools/clippy/clippy_dev/src/lib.rs
@@ -1,9 +1,12 @@
+// tidy-alphabetical-start
#![feature(lazy_cell)]
#![feature(let_chains)]
#![feature(rustc_private)]
+// tidy-alphabetical-end
#![cfg_attr(feature = "deny-warnings", deny(warnings))]
// warn on lints, that are included in `rust-lang/rust`s bootstrap
-#![warn(rust_2018_idioms, unused_lifetimes)]
+#![warn(rust_2018_idioms)]
+#![warn(unused_lifetimes)]
// The `rustc_driver` crate seems to be required in order to use the `rust_lexer` crate.
#[allow(unused_extern_crates)]
diff --git a/src/tools/clippy/clippy_lints/src/lib.rs b/src/tools/clippy/clippy_lints/src/lib.rs
index 358004cf460b1..40d66ac978189 100644
--- a/src/tools/clippy/clippy_lints/src/lib.rs
+++ b/src/tools/clippy/clippy_lints/src/lib.rs
@@ -1,3 +1,4 @@
+// tidy-alphabetical-start
#![feature(array_windows)]
#![feature(binary_heap_into_iter_sorted)]
#![feature(box_patterns)]
@@ -8,6 +9,7 @@
#![feature(never_type)]
#![feature(rustc_private)]
#![feature(stmt_expr_attributes)]
+// tidy-alphabetical-end
#![recursion_limit = "512"]
#![cfg_attr(feature = "deny-warnings", deny(warnings))]
#![allow(clippy::missing_docs_in_private_items, clippy::must_use_candidate)]
diff --git a/src/tools/clippy/clippy_utils/src/lib.rs b/src/tools/clippy/clippy_utils/src/lib.rs
index 171b7faf21960..63bc168034f70 100644
--- a/src/tools/clippy/clippy_utils/src/lib.rs
+++ b/src/tools/clippy/clippy_utils/src/lib.rs
@@ -1,3 +1,7 @@
+// tidy-alphabetical-start
+#![allow(clippy::missing_errors_doc)]
+#![allow(clippy::missing_panics_doc)]
+#![allow(clippy::must_use_candidate)]
#![feature(array_chunks)]
#![feature(box_patterns)]
#![feature(if_let_guard)]
@@ -5,13 +9,15 @@
#![feature(lint_reasons)]
#![feature(never_type)]
#![feature(rustc_private)]
+// tidy-alphabetical-end
#![recursion_limit = "512"]
#![cfg_attr(feature = "deny-warnings", deny(warnings))]
-#![allow(clippy::missing_errors_doc, clippy::missing_panics_doc, clippy::must_use_candidate)]
// warn on the same lints as `clippy_lints`
-#![warn(trivial_casts, trivial_numeric_casts)]
+#![warn(trivial_casts)]
+#![warn(trivial_numeric_casts)]
// warn on lints, that are included in `rust-lang/rust`s bootstrap
-#![warn(rust_2018_idioms, unused_lifetimes)]
+#![warn(rust_2018_idioms)]
+#![warn(unused_lifetimes)]
// warn on rustc internal lints
#![warn(rustc::internal)]
diff --git a/src/tools/clippy/declare_clippy_lint/src/lib.rs b/src/tools/clippy/declare_clippy_lint/src/lib.rs
index 0057256f659b5..e0ca68b16456e 100644
--- a/src/tools/clippy/declare_clippy_lint/src/lib.rs
+++ b/src/tools/clippy/declare_clippy_lint/src/lib.rs
@@ -1,7 +1,8 @@
#![feature(let_chains)]
#![cfg_attr(feature = "deny-warnings", deny(warnings))]
// warn on lints, that are included in `rust-lang/rust`s bootstrap
-#![warn(rust_2018_idioms, unused_lifetimes)]
+#![warn(rust_2018_idioms)]
+#![warn(unused_lifetimes)]
use proc_macro::TokenStream;
use quote::{format_ident, quote};
diff --git a/src/tools/miri/src/lib.rs b/src/tools/miri/src/lib.rs
index 0e50618ad9ec6..656927072b4db 100644
--- a/src/tools/miri/src/lib.rs
+++ b/src/tools/miri/src/lib.rs
@@ -1,48 +1,48 @@
-#![feature(rustc_private)]
+// tidy-alphabetical-start
#![feature(float_gamma)]
+#![feature(io_error_more)]
+#![feature(lint_reasons)]
+#![feature(local_key_cell_methods)]
#![feature(map_try_insert)]
#![feature(never_type)]
-#![feature(try_blocks)]
-#![feature(io_error_more)]
-#![feature(variant_count)]
-#![feature(yeet_expr)]
#![feature(nonzero_ops)]
-#![feature(local_key_cell_methods)]
-#![feature(round_ties_even)]
#![feature(os_str_bytes)]
-#![feature(lint_reasons)]
+#![feature(round_ties_even)]
+#![feature(rustc_private)]
#![feature(trait_upcasting)]
-// Configure clippy and other lints
-#![allow(
- clippy::collapsible_else_if,
- clippy::collapsible_if,
- clippy::if_same_then_else,
- clippy::comparison_chain,
- clippy::enum_variant_names,
- clippy::field_reassign_with_default,
- clippy::manual_map,
- clippy::neg_cmp_op_on_partial_ord,
- clippy::new_without_default,
- clippy::single_match,
- clippy::useless_format,
- clippy::derive_partial_eq_without_eq,
- clippy::derived_hash_with_manual_eq,
- clippy::too_many_arguments,
- clippy::type_complexity,
- clippy::single_element_loop,
- clippy::needless_return,
- clippy::bool_to_int_with_if,
- clippy::box_default,
- // We are not implementing queries here so it's fine
- rustc::potential_query_instability
-)]
-#![warn(
- rust_2018_idioms,
- clippy::cast_possible_wrap, // unsigned -> signed
- clippy::cast_sign_loss, // signed -> unsigned
- clippy::cast_lossless,
- clippy::cast_possible_truncation,
-)]
+#![feature(try_blocks)]
+#![feature(variant_count)]
+#![feature(yeet_expr)]
+// tidy-alphabetical-end
+// tidy-alphabetical-start
+#![allow(clippy::bool_to_int_with_if)]
+#![allow(clippy::box_defaul)]
+#![allow(clippy::box_default)]
+#![allow(clippy::collapsible_else_if)]
+#![allow(clippy::collapsible_if)]
+#![allow(clippy::comparison_chain)]
+#![allow(clippy::derived_hash_with_manual_eq)]
+#![allow(clippy::derive_partial_eq_without_eq)]
+#![allow(clippy::enum_variant_names)]
+#![allow(clippy::field_reassign_with_default)]
+#![allow(clippy::if_same_then_else)]
+#![allow(clippy::manual_map)]
+#![allow(clippy::needless_return)]
+#![allow(clippy::neg_cmp_op_on_partial_ord)]
+#![allow(clippy::new_without_default)]
+#![allow(clippy::single_element_loop)]
+#![allow(clippy::single_match)]
+#![allow(clippy::too_many_arguments)]
+#![allow(clippy::type_complexity)]
+#![allow(clippy::useless_format)]
+#![warn(clippy::cast_lossless)]
+#![warn(clippy::cast_possible_truncation)]
+#![warn(clippy::cast_possible_wrap)]
+#![warn(clippy::cast_sign_loss)]
+#![warn(rust_2018_idioms)]
+// tidy-alphabetical-end
+// We are not implementing queries here so it's fine
+#![allow(rustc::potential_query_instability)]
// Needed for rustdoc from bootstrap (with `-Znormalize-docs`).
#![recursion_limit = "256"]
diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs
index 84bd15efb8bee..73ca297630c21 100644
--- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/lib.rs
@@ -11,9 +11,17 @@
//! rustc rather than `unstable`. (Although in general ABI compatibility is still an issue)…
#![cfg(feature = "sysroot-abi")]
-#![feature(proc_macro_internals, proc_macro_diagnostic, proc_macro_span)]
-#![warn(rust_2018_idioms, unused_lifetimes, semicolon_in_expressions_from_macros)]
+// tidy-alphabetical-start
+#![feature(proc_macro_diagnostic)]
+#![feature(proc_macro_internals)]
+#![feature(proc_macro_span)]
+// tidy-alphabetical-end
+// tidy-alphabetical-start
#![allow(unreachable_pub)]
+#![warn(rust_2018_idioms)]
+#![warn(semicolon_in_expressions_from_macros)]
+#![warn(unused_lifetimes)]
+// tidy-alphabetical-end
extern crate proc_macro;
diff --git a/src/tools/rustfmt/src/lib.rs b/src/tools/rustfmt/src/lib.rs
index 567628f63bdf2..41ac5466f2ce6 100644
--- a/src/tools/rustfmt/src/lib.rs
+++ b/src/tools/rustfmt/src/lib.rs
@@ -1,9 +1,11 @@
#![feature(rustc_private)]
+// tidy-alphabetical-start
+#![allow(clippy::match_like_matches_macro)]
+#![allow(unreachable_pub)]
#![deny(rust_2018_idioms)]
#![warn(unreachable_pub)]
+// tidy-alphabetical-end
#![recursion_limit = "256"]
-#![allow(clippy::match_like_matches_macro)]
-#![allow(unreachable_pub)]
#[cfg(test)]
#[macro_use]
diff --git a/src/tools/rustfmt/tests/source/cfg_if/lib.rs b/src/tools/rustfmt/tests/source/cfg_if/lib.rs
index 8b3bb304f1c83..1ca308ea5dfe3 100644
--- a/src/tools/rustfmt/tests/source/cfg_if/lib.rs
+++ b/src/tools/rustfmt/tests/source/cfg_if/lib.rs
@@ -12,9 +12,15 @@
//! * `powerpc64`: [`is_powerpc64_feature_detected`]
#![unstable(feature = "stdsimd", issue = "27731")]
-#![feature(const_fn, staged_api, stdsimd, doc_cfg, allow_internal_unstable)]
+// tidy-alphabetical-start
#![allow(clippy::shadow_reuse)]
#![deny(clippy::missing_inline_in_public_items)]
+#![feature(allow_internal_unstable)]
+#![feature(const_fn)]
+#![feature(doc_cfg)]
+#![feature(staged_api)]
+#![feature(stdsimd)]
+// tidy-alphabetical-end
#![cfg_attr(target_os = "linux", feature(linkage))]
#![cfg_attr(all(target_os = "freebsd", target_arch = "aarch64"), feature(asm))]
#![cfg_attr(stdsimd_strict, deny(warnings))]
diff --git a/src/tools/rustfmt/tests/target/cfg_if/lib.rs b/src/tools/rustfmt/tests/target/cfg_if/lib.rs
index 8b3bb304f1c83..1ca308ea5dfe3 100644
--- a/src/tools/rustfmt/tests/target/cfg_if/lib.rs
+++ b/src/tools/rustfmt/tests/target/cfg_if/lib.rs
@@ -12,9 +12,15 @@
//! * `powerpc64`: [`is_powerpc64_feature_detected`]
#![unstable(feature = "stdsimd", issue = "27731")]
-#![feature(const_fn, staged_api, stdsimd, doc_cfg, allow_internal_unstable)]
+// tidy-alphabetical-start
#![allow(clippy::shadow_reuse)]
#![deny(clippy::missing_inline_in_public_items)]
+#![feature(allow_internal_unstable)]
+#![feature(const_fn)]
+#![feature(doc_cfg)]
+#![feature(staged_api)]
+#![feature(stdsimd)]
+// tidy-alphabetical-end
#![cfg_attr(target_os = "linux", feature(linkage))]
#![cfg_attr(all(target_os = "freebsd", target_arch = "aarch64"), feature(asm))]
#![cfg_attr(stdsimd_strict, deny(warnings))]
diff --git a/tests/run-make/raw-dylib-cross-compilation/lib.rs b/tests/run-make/raw-dylib-cross-compilation/lib.rs
index 3338ac0a0b50f..28693664ac595 100644
--- a/tests/run-make/raw-dylib-cross-compilation/lib.rs
+++ b/tests/run-make/raw-dylib-cross-compilation/lib.rs
@@ -1,4 +1,7 @@
-#![feature(no_core, lang_items)]
+// tidy-alphabetical-start
+#![feature(lang_items)]
+#![feature(no_core)]
+// tidy-alphabetical-end
#![no_std]
#![no_core]
#![crate_type = "lib"]
@@ -8,7 +11,7 @@
trait Sized {}
#[link(name = "extern_1", kind = "raw-dylib")]
-extern {
+extern "C" {
fn extern_fn();
}
diff --git a/tests/run-make/wasm-exceptions-nostd/src/lib.rs b/tests/run-make/wasm-exceptions-nostd/src/lib.rs
index 7049d2fd9e0d1..f3351b8e1ff57 100644
--- a/tests/run-make/wasm-exceptions-nostd/src/lib.rs
+++ b/tests/run-make/wasm-exceptions-nostd/src/lib.rs
@@ -4,10 +4,12 @@
// Allow a few unstable features because we create a panic
// runtime for native wasm exceptions from scratch
+// tidy-alphabetical-start
#![feature(core_intrinsics)]
#![feature(lang_items)]
#![feature(link_llvm_intrinsics)]
#![feature(panic_info_message)]
+// tidy-alphabetical-end
extern crate alloc;
diff --git a/tests/rustdoc-gui/search-reexport.goml b/tests/rustdoc-gui/search-reexport.goml
index b9d2c8f15cee1..8f77d0b141d09 100644
--- a/tests/rustdoc-gui/search-reexport.goml
+++ b/tests/rustdoc-gui/search-reexport.goml
@@ -4,7 +4,7 @@ go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
set-local-storage: {"rustdoc-theme": "dark", "rustdoc-use-system-theme": "false"}
reload:
// First we check that the reexport has the correct ID and no background color.
-assert-text: ("//*[@id='reexport.TheStdReexport']", "pub use ::std as TheStdReexport;")
+assert-text: ("//*[@id='reexport.TheStdReexport']", "pub use std as TheStdReexport;")
assert-css: ("//*[@id='reexport.TheStdReexport']", {"background-color": "rgba(0, 0, 0, 0)"})
write: (".search-input", "TheStdReexport")
// To be SURE that the search will be run.
diff --git a/tests/rustdoc-gui/src/test_docs/lib.rs b/tests/rustdoc-gui/src/test_docs/lib.rs
index 49484ee086960..c1b7bd4a421e1 100644
--- a/tests/rustdoc-gui/src/test_docs/lib.rs
+++ b/tests/rustdoc-gui/src/test_docs/lib.rs
@@ -1,12 +1,13 @@
//! The point of this crate is to be able to have enough different "kinds" of
//! documentation generated so we can test each different features.
-#![doc(html_playground_url="https://play.rust-lang.org/")]
-
+#![doc(html_playground_url = "https://play.rust-lang.org/")]
#![crate_name = "test_docs"]
#![allow(internal_features)]
-#![feature(rustdoc_internals)]
-#![feature(doc_cfg)]
+// tidy-alphabetical-start
#![feature(associated_type_defaults)]
+#![feature(doc_cfg)]
+#![feature(rustdoc_internals)]
+// tidy-alphabetical-end
/*!
Enable the feature some-feature
to enjoy
@@ -301,7 +302,7 @@ pub trait EmptyTrait1 {}
pub trait EmptyTrait2 {}
pub trait EmptyTrait3 {}
-pub struct HasEmptyTraits{}
+pub struct HasEmptyTraits {}
impl EmptyTrait1 for HasEmptyTraits {}
impl EmptyTrait2 for HasEmptyTraits {}
@@ -312,7 +313,7 @@ mod macros;
pub use macros::*;
#[doc(alias = "AliasForTheStdReexport")]
-pub use ::std as TheStdReexport;
+pub use std as TheStdReexport;
pub mod details {
/// We check the appearance of the ``/`` in here.
@@ -364,19 +365,22 @@ pub mod doc_block_table {
println!();
}
}
-
}
pub struct NotableStructWithLongName(R);
impl NotableStructWithLongName {
- pub fn create_an_iterator_from_read(r: R) -> NotableStructWithLongName { Self(r) }
+ pub fn create_an_iterator_from_read(r: R) -> NotableStructWithLongName {
+ Self(r)
+ }
}
impl std::iter::Iterator for NotableStructWithLongName {
type Item = ();
- fn next(&mut self) -> Option { () }
+ fn next(&mut self) -> Option {
+ ()
+ }
}
pub trait TraitWithNoDocblocks {
@@ -485,7 +489,6 @@ pub mod search_results {
macro_rules! foo {
() => {};
}
-
}
pub mod fields {
@@ -498,14 +501,8 @@ pub mod fields {
pub b: u32,
}
pub enum Enum {
- A {
- a: u8,
- b: u32,
- },
- B {
- a: u8,
- b: u32,
- },
+ A { a: u8, b: u32 },
+ B { a: u8, b: u32 },
}
}