From b9a95d89902a6c9ba17dae21d84c2c04454bdddd Mon Sep 17 00:00:00 2001
From: clubby789 <jamie@hill-daniel.co.uk>
Date: Tue, 1 Nov 2022 00:11:35 +0000
Subject: [PATCH] Use `allow_internal_unstable` and add unstable reason

---
 compiler/rustc_ast/src/lib.rs             | 1 -
 compiler/rustc_borrowck/src/lib.rs        | 1 -
 compiler/rustc_data_structures/src/lib.rs | 1 -
 compiler/rustc_hir/src/lib.rs             | 1 -
 compiler/rustc_hir_analysis/src/lib.rs    | 1 -
 compiler/rustc_hir_typeck/src/lib.rs      | 1 -
 compiler/rustc_index/src/lib.rs           | 1 -
 compiler/rustc_infer/src/lib.rs           | 1 -
 compiler/rustc_lint/src/lib.rs            | 1 -
 compiler/rustc_macros/src/lib.rs          | 2 +-
 compiler/rustc_middle/src/lib.rs          | 1 -
 compiler/rustc_mir_build/src/lib.rs       | 1 -
 compiler/rustc_mir_dataflow/src/lib.rs    | 1 -
 compiler/rustc_mir_transform/src/lib.rs   | 1 -
 compiler/rustc_passes/src/lib.rs          | 1 -
 compiler/rustc_query_system/src/lib.rs    | 1 -
 compiler/rustc_span/src/lib.rs            | 1 -
 compiler/rustc_target/src/lib.rs          | 1 -
 compiler/rustc_type_ir/src/lib.rs         | 1 -
 library/core/src/option.rs                | 4 ++--
 20 files changed, 3 insertions(+), 21 deletions(-)

diff --git a/compiler/rustc_ast/src/lib.rs b/compiler/rustc_ast/src/lib.rs
index da371825262..eeb7e56e2b1 100644
--- a/compiler/rustc_ast/src/lib.rs
+++ b/compiler/rustc_ast/src/lib.rs
@@ -15,7 +15,6 @@
 #![feature(if_let_guard)]
 #![feature(let_chains)]
 #![feature(min_specialization)]
-#![feature(spec_option_partial_eq)]
 #![feature(negative_impls)]
 #![feature(slice_internals)]
 #![feature(stmt_expr_attributes)]
diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs
index 75e8b9899aa..abfe253d43d 100644
--- a/compiler/rustc_borrowck/src/lib.rs
+++ b/compiler/rustc_borrowck/src/lib.rs
@@ -6,7 +6,6 @@
 #![feature(min_specialization)]
 #![feature(never_type)]
 #![feature(rustc_attrs)]
-#![feature(spec_option_partial_eq)]
 #![feature(stmt_expr_attributes)]
 #![feature(trusted_step)]
 #![feature(try_blocks)]
diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs
index a7b2f97ac19..3a2000233c5 100644
--- a/compiler/rustc_data_structures/src/lib.rs
+++ b/compiler/rustc_data_structures/src/lib.rs
@@ -13,7 +13,6 @@
 #![feature(cell_leak)]
 #![feature(control_flow_enum)]
 #![feature(extend_one)]
-#![feature(spec_option_partial_eq)]
 #![feature(hash_raw_entry)]
 #![feature(hasher_prefixfree_extras)]
 #![feature(maybe_uninit_uninit_array)]
diff --git a/compiler/rustc_hir/src/lib.rs b/compiler/rustc_hir/src/lib.rs
index 9585f92bde3..1c55cd8fee8 100644
--- a/compiler/rustc_hir/src/lib.rs
+++ b/compiler/rustc_hir/src/lib.rs
@@ -9,7 +9,6 @@
 #![feature(never_type)]
 #![feature(rustc_attrs)]
 #![feature(variant_count)]
-#![feature(spec_option_partial_eq)]
 #![recursion_limit = "256"]
 #![deny(rustc::untranslatable_diagnostic)]
 #![deny(rustc::diagnostic_outside_of_impl)]
diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs
index a855f4c81e8..bd1a461b935 100644
--- a/compiler/rustc_hir_analysis/src/lib.rs
+++ b/compiler/rustc_hir_analysis/src/lib.rs
@@ -65,7 +65,6 @@ This API is completely unstable and subject to change.
 #![feature(is_sorted)]
 #![feature(iter_intersperse)]
 #![feature(let_chains)]
-#![feature(spec_option_partial_eq)]
 #![feature(min_specialization)]
 #![feature(never_type)]
 #![feature(once_cell)]
diff --git a/compiler/rustc_hir_typeck/src/lib.rs b/compiler/rustc_hir_typeck/src/lib.rs
index ef089237994..959c5486645 100644
--- a/compiler/rustc_hir_typeck/src/lib.rs
+++ b/compiler/rustc_hir_typeck/src/lib.rs
@@ -3,7 +3,6 @@
 #![feature(try_blocks)]
 #![feature(never_type)]
 #![feature(min_specialization)]
-#![feature(spec_option_partial_eq)]
 #![feature(control_flow_enum)]
 #![feature(drain_filter)]
 #![allow(rustc::potential_query_instability)]
diff --git a/compiler/rustc_index/src/lib.rs b/compiler/rustc_index/src/lib.rs
index 28a28d2acf0..23a4c1f0696 100644
--- a/compiler/rustc_index/src/lib.rs
+++ b/compiler/rustc_index/src/lib.rs
@@ -6,7 +6,6 @@
 #![feature(new_uninit)]
 #![feature(step_trait)]
 #![feature(stmt_expr_attributes)]
-#![feature(spec_option_partial_eq)]
 #![feature(test)]
 
 pub mod bit_set;
diff --git a/compiler/rustc_infer/src/lib.rs b/compiler/rustc_infer/src/lib.rs
index d88c155dc0b..e040634edb0 100644
--- a/compiler/rustc_infer/src/lib.rs
+++ b/compiler/rustc_infer/src/lib.rs
@@ -19,7 +19,6 @@
 #![feature(extend_one)]
 #![feature(let_chains)]
 #![feature(if_let_guard)]
-#![feature(spec_option_partial_eq)]
 #![feature(min_specialization)]
 #![feature(never_type)]
 #![feature(try_blocks)]
diff --git a/compiler/rustc_lint/src/lib.rs b/compiler/rustc_lint/src/lib.rs
index 367eb800b03..5288fc542d7 100644
--- a/compiler/rustc_lint/src/lib.rs
+++ b/compiler/rustc_lint/src/lib.rs
@@ -34,7 +34,6 @@
 #![feature(iter_intersperse)]
 #![feature(iter_order_by)]
 #![feature(let_chains)]
-#![feature(spec_option_partial_eq)]
 #![feature(min_specialization)]
 #![feature(never_type)]
 #![recursion_limit = "256"]
diff --git a/compiler/rustc_macros/src/lib.rs b/compiler/rustc_macros/src/lib.rs
index 36bda3e0f6b..607b9bd4437 100644
--- a/compiler/rustc_macros/src/lib.rs
+++ b/compiler/rustc_macros/src/lib.rs
@@ -47,7 +47,7 @@ pub fn symbols(input: TokenStream) -> TokenStream {
 /// `u32::MAX`. You can also customize things like the `Debug` impl,
 /// what traits are derived, and so forth via the macro.
 #[proc_macro]
-#[allow_internal_unstable(step_trait, rustc_attrs, trusted_step)]
+#[allow_internal_unstable(step_trait, rustc_attrs, trusted_step, spec_option_partial_eq)]
 pub fn newtype_index(input: TokenStream) -> TokenStream {
     newtype::newtype(input)
 }
diff --git a/compiler/rustc_middle/src/lib.rs b/compiler/rustc_middle/src/lib.rs
index 040a33c6c29..a58cbc3767e 100644
--- a/compiler/rustc_middle/src/lib.rs
+++ b/compiler/rustc_middle/src/lib.rs
@@ -31,7 +31,6 @@
 #![feature(discriminant_kind)]
 #![feature(exhaustive_patterns)]
 #![feature(get_mut_unchecked)]
-#![feature(spec_option_partial_eq)]
 #![feature(if_let_guard)]
 #![feature(negative_impls)]
 #![feature(never_type)]
diff --git a/compiler/rustc_mir_build/src/lib.rs b/compiler/rustc_mir_build/src/lib.rs
index 7ef98c2a153..b53bd3d0710 100644
--- a/compiler/rustc_mir_build/src/lib.rs
+++ b/compiler/rustc_mir_build/src/lib.rs
@@ -7,7 +7,6 @@
 #![feature(control_flow_enum)]
 #![feature(if_let_guard)]
 #![feature(let_chains)]
-#![feature(spec_option_partial_eq)]
 #![feature(min_specialization)]
 #![feature(once_cell)]
 #![recursion_limit = "256"]
diff --git a/compiler/rustc_mir_dataflow/src/lib.rs b/compiler/rustc_mir_dataflow/src/lib.rs
index 31f27860fa7..b471d04fd60 100644
--- a/compiler/rustc_mir_dataflow/src/lib.rs
+++ b/compiler/rustc_mir_dataflow/src/lib.rs
@@ -4,7 +4,6 @@
 #![feature(min_specialization)]
 #![feature(once_cell)]
 #![feature(stmt_expr_attributes)]
-#![feature(spec_option_partial_eq)]
 #![feature(trusted_step)]
 #![recursion_limit = "256"]
 #![deny(rustc::untranslatable_diagnostic)]
diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs
index 9afa1171e7c..4791be1306c 100644
--- a/compiler/rustc_mir_transform/src/lib.rs
+++ b/compiler/rustc_mir_transform/src/lib.rs
@@ -7,7 +7,6 @@
 #![feature(once_cell)]
 #![feature(option_get_or_insert_default)]
 #![feature(trusted_step)]
-#![feature(spec_option_partial_eq)]
 #![feature(try_blocks)]
 #![feature(yeet_expr)]
 #![feature(if_let_guard)]
diff --git a/compiler/rustc_passes/src/lib.rs b/compiler/rustc_passes/src/lib.rs
index 294a22d80c2..15f60f626c8 100644
--- a/compiler/rustc_passes/src/lib.rs
+++ b/compiler/rustc_passes/src/lib.rs
@@ -11,7 +11,6 @@
 #![feature(iter_intersperse)]
 #![feature(let_chains)]
 #![feature(map_try_insert)]
-#![feature(spec_option_partial_eq)]
 #![feature(min_specialization)]
 #![feature(try_blocks)]
 #![recursion_limit = "256"]
diff --git a/compiler/rustc_query_system/src/lib.rs b/compiler/rustc_query_system/src/lib.rs
index b0781c77b4a..f47760e9ae6 100644
--- a/compiler/rustc_query_system/src/lib.rs
+++ b/compiler/rustc_query_system/src/lib.rs
@@ -3,7 +3,6 @@
 #![feature(hash_raw_entry)]
 #![feature(min_specialization)]
 #![feature(extern_types)]
-#![feature(spec_option_partial_eq)]
 #![allow(rustc::potential_query_instability)]
 #![deny(rustc::untranslatable_diagnostic)]
 #![deny(rustc::diagnostic_outside_of_impl)]
diff --git a/compiler/rustc_span/src/lib.rs b/compiler/rustc_span/src/lib.rs
index 7a1e6e36f3e..322c7104be4 100644
--- a/compiler/rustc_span/src/lib.rs
+++ b/compiler/rustc_span/src/lib.rs
@@ -18,7 +18,6 @@
 #![feature(if_let_guard)]
 #![feature(negative_impls)]
 #![feature(min_specialization)]
-#![feature(spec_option_partial_eq)]
 #![feature(rustc_attrs)]
 #![deny(rustc::untranslatable_diagnostic)]
 #![deny(rustc::diagnostic_outside_of_impl)]
diff --git a/compiler/rustc_target/src/lib.rs b/compiler/rustc_target/src/lib.rs
index 464214b64de..aaba0d7f093 100644
--- a/compiler/rustc_target/src/lib.rs
+++ b/compiler/rustc_target/src/lib.rs
@@ -14,7 +14,6 @@
 #![feature(min_specialization)]
 #![feature(never_type)]
 #![feature(rustc_attrs)]
-#![feature(spec_option_partial_eq)]
 #![feature(step_trait)]
 #![deny(rustc::untranslatable_diagnostic)]
 #![deny(rustc::diagnostic_outside_of_impl)]
diff --git a/compiler/rustc_type_ir/src/lib.rs b/compiler/rustc_type_ir/src/lib.rs
index e77da97e1dd..7fbe78aa523 100644
--- a/compiler/rustc_type_ir/src/lib.rs
+++ b/compiler/rustc_type_ir/src/lib.rs
@@ -1,7 +1,6 @@
 #![feature(fmt_helpers_for_derive)]
 #![feature(min_specialization)]
 #![feature(rustc_attrs)]
-#![feature(spec_option_partial_eq)]
 #![deny(rustc::untranslatable_diagnostic)]
 #![deny(rustc::diagnostic_outside_of_impl)]
 
diff --git a/library/core/src/option.rs b/library/core/src/option.rs
index e462f840fda..ab2ce5a7b00 100644
--- a/library/core/src/option.rs
+++ b/library/core/src/option.rs
@@ -2045,13 +2045,13 @@ impl<T: PartialEq> PartialEq for Option<T> {
     }
 }
 
-#[unstable(feature = "spec_option_partial_eq", issue = "none")]
+#[unstable(feature = "spec_option_partial_eq", issue = "none", reason = "exposed only for rustc")]
 #[doc(hidden)]
 pub trait SpecOptionPartialEq: Sized {
     fn eq(l: &Option<Self>, other: &Option<Self>) -> bool;
 }
 
-#[unstable(feature = "spec_option_partial_eq", issue = "none")]
+#[unstable(feature = "spec_option_partial_eq", issue = "none", reason = "exposed only for rustc")]
 impl<T: PartialEq> SpecOptionPartialEq for T {
     #[inline]
     default fn eq(l: &Option<T>, r: &Option<T>) -> bool {