about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock20
-rw-r--r--compiler/rustc_baked_icu_data/Cargo.toml2
-rw-r--r--compiler/rustc_baked_icu_data/src/data/list_and_v1.rs.data20
-rw-r--r--compiler/rustc_baked_icu_data/src/data/locale_likely_subtags_language_v1.rs.data95
-rw-r--r--compiler/rustc_baked_icu_data/src/data/locale_parents_v1.rs.data85
-rw-r--r--compiler/rustc_baked_icu_data/src/data/mod.rs7
-rw-r--r--compiler/rustc_baked_icu_data/src/lib.rs4
-rw-r--r--compiler/rustc_error_messages/Cargo.toml1
-rw-r--r--compiler/rustc_error_messages/src/lib.rs10
-rw-r--r--src/tools/tidy/src/deps.rs2
10 files changed, 30 insertions, 216 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 1e4fbd952a8..0c4e757539f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1702,6 +1702,7 @@ dependencies = [
  "displaydoc",
  "icu_collections",
  "icu_locale_core",
+ "icu_locale_data",
  "icu_provider",
  "potential_utf",
  "tinystr",
@@ -1722,6 +1723,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "icu_locale_data"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fdef0c124749d06a743c69e938350816554eb63ac979166590e2b4ee4252765"
+
+[[package]]
 name = "icu_normalizer"
 version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1782,18 +1789,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "icu_provider_adapters"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c260e90e962088d46a1605687f78d3293cc3a34ba66b08ff7361084bc7895e"
-dependencies = [
- "icu_locale",
- "icu_provider",
- "tinystr",
- "zerovec",
-]
-
-[[package]]
 name = "id-arena"
 version = "2.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3697,7 +3692,6 @@ dependencies = [
  "fluent-syntax",
  "icu_list",
  "icu_locale",
- "icu_provider_adapters",
  "intl-memoizer",
  "rustc_ast",
  "rustc_ast_pretty",
diff --git a/compiler/rustc_baked_icu_data/Cargo.toml b/compiler/rustc_baked_icu_data/Cargo.toml
index 11bd079da0a..2f1ab7df379 100644
--- a/compiler/rustc_baked_icu_data/Cargo.toml
+++ b/compiler/rustc_baked_icu_data/Cargo.toml
@@ -6,7 +6,7 @@ edition = "2024"
 [dependencies]
 # tidy-alphabetical-start
 icu_list = { version = "2.0", default-features = false }
-icu_locale = { version = "2.0", default-features = false }
+icu_locale = { version = "2.0", default-features = false, features = ["compiled_data"] }
 icu_provider = { version = "2.0", features = ["baked", "sync"] }
 zerovec = "0.11.0"
 # tidy-alphabetical-end
diff --git a/compiler/rustc_baked_icu_data/src/data/list_and_v1.rs.data b/compiler/rustc_baked_icu_data/src/data/list_and_v1.rs.data
index 9d9137cc6e3..1d60e0085fc 100644
--- a/compiler/rustc_baked_icu_data/src/data/list_and_v1.rs.data
+++ b/compiler/rustc_baked_icu_data/src/data/list_and_v1.rs.data
@@ -11,6 +11,7 @@
 ///
 /// This macro requires the following crates:
 /// * `icu_list`
+/// * `icu_locale/compiled_data`
 /// * `icu_provider`
 /// * `icu_provider/baked`
 /// * `zerovec`
@@ -31,8 +32,23 @@ macro_rules! __impl_list_and_v1 {
         #[clippy::msrv = "1.82"]
         impl icu_provider::DataProvider<icu_list::provider::ListAndV1> for $provider {
             fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu_list::provider::ListAndV1>, icu_provider::DataError> {
-                let metadata = icu_provider::DataResponseMetadata::default();
-                let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_LIST_AND_V1, req.id, req.metadata.attributes_prefix_match) else { return Err(icu_provider::DataErrorKind::IdentifierNotFound.with_req(<icu_list::provider::ListAndV1 as icu_provider::DataMarker>::INFO, req)) };
+                let mut metadata = icu_provider::DataResponseMetadata::default();
+                let payload = if let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_LIST_AND_V1, req.id, req.metadata.attributes_prefix_match) {
+                    payload
+                } else {
+                    const FALLBACKER: icu_locale::fallback::LocaleFallbackerWithConfig<'static> = icu_locale::fallback::LocaleFallbacker::new().for_config(<icu_list::provider::ListAndV1 as icu_provider::DataMarker>::INFO.fallback_config);
+                    let mut fallback_iterator = FALLBACKER.fallback_for(req.id.locale.clone());
+                    loop {
+                        if let Some(payload) = icu_provider::baked::DataStore::get(&Self::DATA_LIST_AND_V1, icu_provider::DataIdentifierBorrowed::for_marker_attributes_and_locale(req.id.marker_attributes, fallback_iterator.get()), req.metadata.attributes_prefix_match) {
+                            metadata.locale = Some(fallback_iterator.take());
+                            break payload;
+                        }
+                        if fallback_iterator.get().is_unknown() {
+                            return Err(icu_provider::DataErrorKind::IdentifierNotFound.with_req(<icu_list::provider::ListAndV1 as icu_provider::DataMarker>::INFO, req));
+                        }
+                        fallback_iterator.step();
+                    }
+                };
                 Ok(icu_provider::DataResponse { payload, metadata })
             }
         }
diff --git a/compiler/rustc_baked_icu_data/src/data/locale_likely_subtags_language_v1.rs.data b/compiler/rustc_baked_icu_data/src/data/locale_likely_subtags_language_v1.rs.data
deleted file mode 100644
index 0fbace0865d..00000000000
--- a/compiler/rustc_baked_icu_data/src/data/locale_likely_subtags_language_v1.rs.data
+++ /dev/null
@@ -1,95 +0,0 @@
-// @generated
-/// Implement `DataProvider<LocaleLikelySubtagsLanguageV1>` on the given struct using the data
-/// hardcoded in this file. This allows the struct to be used with
-/// `icu`'s `_unstable` constructors.
-///
-/// Using this implementation will embed the following data in the binary's data segment:
-/// * 2310B[^1] for the singleton data struct
-///
-/// [^1]: these numbers can be smaller in practice due to linker deduplication
-///
-/// This macro requires the following crates:
-/// * `icu_locale`
-/// * `icu_locale_core`
-/// * `icu_provider`
-/// * `zerovec`
-#[doc(hidden)]
-#[macro_export]
-macro_rules! __impl_locale_likely_subtags_language_v1 {
-    ($ provider : ty) => {
-        #[clippy::msrv = "1.82"]
-        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
-        #[clippy::msrv = "1.82"]
-        impl $provider {
-            #[doc(hidden)]
-            pub const SINGLETON_LOCALE_LIKELY_SUBTAGS_LANGUAGE_V1: &'static <icu_locale::provider::LocaleLikelySubtagsLanguageV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu_locale::provider::LikelySubtagsForLanguage {
-                language_script: unsafe {
-                    #[allow(unused_unsafe)]
-                    zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0Araben\0Shawff\0Adlmkk\0Arabku\0Arabku\0Yeziky\0Arabky\0Latnmn\0Mongpa\0Arabsd\0Devasd\0Khojsd\0Sindtg\0Arabug\0Cyrluz\0ArabyueHanszh\0Bopozh\0Hanbzh\0Hant") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IR\0GB\0GN\0CN\0IQ\0GE\0CN\0TR\0CN\0PK\0IN\0IN\0IN\0PK\0KZ\0AF\0CN\0TW\0TW\0TW\0") })
-                },
-                language_region: unsafe {
-                    #[allow(unused_unsafe)]
-                    zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0IQ\0az\0IR\0az\0RU\0ha\0CM\0ha\0SD\0kk\0AF\0kk\0CN\0kk\0IR\0kk\0MN\0ku\0LB\0ky\0CN\0ky\0TR\0mn\0CN\0ms\0CC\0pa\0PK\0sd\0IN\0sr\0ME\0sr\0RO\0sr\0TR\0tg\0PK\0ug\0KZ\0ug\0MN\0uz\0AF\0uz\0CN\0yueCN\0zh\0AU\0zh\0BN\0zh\0GB\0zh\0GF\0zh\0HK\0zh\0ID\0zh\0MO\0zh\0PA\0zh\0PF\0zh\0PH\0zh\0SR\0zh\0TH\0zh\0TW\0zh\0US\0zh\0VN\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabArabCyrlArabArabArabArabArabArabArabArabLatnMongArabArabDevaLatnLatnLatnArabCyrlCyrlArabCyrlHansHantHantHantHantHantHantHantHantHantHantHantHantHantHantHant") })
-                },
-                language: unsafe {
-                    #[allow(unused_unsafe)]
-                    zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"af\0ak\0am\0ar\0as\0astaz\0balbe\0bg\0bgcbhoblobn\0br\0brxbs\0ca\0cebchrcs\0cswcv\0cy\0da\0de\0doidsbee\0el\0en\0eo\0es\0et\0eu\0fa\0ff\0fi\0filfo\0fr\0fy\0ga\0gaagd\0gl\0gu\0ha\0he\0hi\0hr\0hsbhu\0hy\0ia\0id\0ie\0ig\0ii\0is\0it\0ja\0jv\0ka\0keakgpkk\0km\0kn\0ko\0kokks\0ku\0kxvky\0lb\0lijlmolo\0lt\0lv\0maimi\0mk\0ml\0mn\0mnimr\0ms\0mt\0my\0ndsne\0nl\0nn\0no\0nqonsooc\0om\0or\0pa\0pcmpl\0ps\0pt\0qu\0rajrm\0ro\0ru\0rw\0sa\0sahsatsc\0sd\0si\0sk\0sl\0so\0sq\0sr\0st\0su\0sv\0sw\0syrszlta\0te\0tg\0th\0ti\0tk\0tn\0to\0tr\0tt\0ug\0uk\0ur\0uz\0vecvi\0vmwwo\0xh\0xnryo\0yrlyueza\0zh\0zu\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"LatnZA\0LatnGH\0EthiET\0ArabEG\0BengIN\0LatnES\0LatnAZ\0ArabPK\0CyrlBY\0CyrlBG\0DevaIN\0DevaIN\0LatnBJ\0BengBD\0LatnFR\0DevaIN\0LatnBA\0LatnES\0LatnPH\0CherUS\0LatnCZ\0CansCA\0CyrlRU\0LatnGB\0LatnDK\0LatnDE\0DevaIN\0LatnDE\0LatnGH\0GrekGR\0LatnUS\0Latn001LatnES\0LatnEE\0LatnES\0ArabIR\0LatnSN\0LatnFI\0LatnPH\0LatnFO\0LatnFR\0LatnNL\0LatnIE\0LatnGH\0LatnGB\0LatnES\0GujrIN\0LatnNG\0HebrIL\0DevaIN\0LatnHR\0LatnDE\0LatnHU\0ArmnAM\0Latn001LatnID\0LatnEE\0LatnNG\0YiiiCN\0LatnIS\0LatnIT\0JpanJP\0LatnID\0GeorGE\0LatnCV\0LatnBR\0CyrlKZ\0KhmrKH\0KndaIN\0KoreKR\0DevaIN\0ArabIN\0LatnTR\0LatnIN\0CyrlKG\0LatnLU\0LatnIT\0LatnIT\0LaooLA\0LatnLT\0LatnLV\0DevaIN\0LatnNZ\0CyrlMK\0MlymIN\0CyrlMN\0BengIN\0DevaIN\0LatnMY\0LatnMT\0MymrMM\0LatnDE\0DevaNP\0LatnNL\0LatnNO\0LatnNO\0NkooGN\0LatnZA\0LatnFR\0LatnET\0OryaIN\0GuruIN\0LatnNG\0LatnPL\0ArabAF\0LatnBR\0LatnPE\0DevaIN\0LatnCH\0LatnRO\0CyrlRU\0LatnRW\0DevaIN\0CyrlRU\0OlckIN\0LatnIT\0ArabPK\0SinhLK\0LatnSK\0LatnSI\0LatnSO\0LatnAL\0CyrlRS\0LatnZA\0LatnID\0LatnSE\0LatnTZ\0SyrcIQ\0LatnPL\0TamlIN\0TeluIN\0CyrlTJ\0ThaiTH\0EthiET\0LatnTM\0LatnZA\0LatnTO\0LatnTR\0CyrlRU\0ArabCN\0CyrlUA\0ArabPK\0LatnUZ\0LatnIT\0LatnVN\0LatnMZ\0LatnSN\0LatnZA\0DevaIN\0LatnNG\0LatnBR\0HantHK\0LatnCN\0HansCN\0LatnZA\0") })
-                },
-                und: (icu_locale_core::subtags::language!("en"), icu_locale_core::subtags::script!("Latn"), icu_locale_core::subtags::region!("US")),
-            };
-        }
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::DataProvider<icu_locale::provider::LocaleLikelySubtagsLanguageV1> for $provider {
-            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu_locale::provider::LocaleLikelySubtagsLanguageV1>, icu_provider::DataError> {
-                if req.id.locale.is_unknown() {
-                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCALE_LIKELY_SUBTAGS_LANGUAGE_V1), metadata: icu_provider::DataResponseMetadata::default() })
-                } else {
-                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu_locale::provider::LocaleLikelySubtagsLanguageV1 as icu_provider::DataMarker>::INFO, req))
-                }
-            }
-        }
-    };
-    ($ provider : ty , ITER) => {
-        __impl_locale_likely_subtags_language_v1!($provider);
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::IterableDataProvider<icu_locale::provider::LocaleLikelySubtagsLanguageV1> for $provider {
-            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
-                Ok([Default::default()].into_iter().collect())
-            }
-        }
-    };
-    ($ provider : ty , DRY) => {
-        __impl_locale_likely_subtags_language_v1!($provider);
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::DryDataProvider<icu_locale::provider::LocaleLikelySubtagsLanguageV1> for $provider {
-            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
-                if req.id.locale.is_unknown() {
-                    Ok(icu_provider::DataResponseMetadata::default())
-                } else {
-                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu_locale::provider::LocaleLikelySubtagsLanguageV1 as icu_provider::DataMarker>::INFO, req))
-                }
-            }
-        }
-    };
-    ($ provider : ty , DRY , ITER) => {
-        __impl_locale_likely_subtags_language_v1!($provider);
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::DryDataProvider<icu_locale::provider::LocaleLikelySubtagsLanguageV1> for $provider {
-            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
-                if req.id.locale.is_unknown() {
-                    Ok(icu_provider::DataResponseMetadata::default())
-                } else {
-                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu_locale::provider::LocaleLikelySubtagsLanguageV1 as icu_provider::DataMarker>::INFO, req))
-                }
-            }
-        }
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::IterableDataProvider<icu_locale::provider::LocaleLikelySubtagsLanguageV1> for $provider {
-            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
-                Ok([Default::default()].into_iter().collect())
-            }
-        }
-    };
-}
-#[doc(inline)]
-pub use __impl_locale_likely_subtags_language_v1 as impl_locale_likely_subtags_language_v1;
diff --git a/compiler/rustc_baked_icu_data/src/data/locale_parents_v1.rs.data b/compiler/rustc_baked_icu_data/src/data/locale_parents_v1.rs.data
deleted file mode 100644
index 52527d90885..00000000000
--- a/compiler/rustc_baked_icu_data/src/data/locale_parents_v1.rs.data
+++ /dev/null
@@ -1,85 +0,0 @@
-// @generated
-/// Implement `DataProvider<LocaleParentsV1>` on the given struct using the data
-/// hardcoded in this file. This allows the struct to be used with
-/// `icu`'s `_unstable` constructors.
-///
-/// Using this implementation will embed the following data in the binary's data segment:
-/// * 2846B[^1] for the singleton data struct
-///
-/// [^1]: these numbers can be smaller in practice due to linker deduplication
-///
-/// This macro requires the following crates:
-/// * `icu_locale`
-/// * `icu_provider`
-/// * `zerovec`
-#[doc(hidden)]
-#[macro_export]
-macro_rules! __impl_locale_parents_v1 {
-    ($ provider : ty) => {
-        #[clippy::msrv = "1.82"]
-        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
-        #[clippy::msrv = "1.82"]
-        impl $provider {
-            #[doc(hidden)]
-            pub const SINGLETON_LOCALE_PARENTS_V1: &'static <icu_locale::provider::LocaleParentsV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu_locale::provider::Parents {
-                parents: unsafe {
-                    #[allow(unused_unsafe)]
-                    zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x93\0\x06\0\x0B\0\x10\0\x15\0\x1A\0\x1F\0$\0)\0.\x003\08\0=\0B\0G\0L\0Q\0V\0[\0`\0e\0j\0o\0t\0y\0~\0\x83\0\x88\0\x8D\0\x92\0\x97\0\x9C\0\xA1\0\xA6\0\xAB\0\xB0\0\xB5\0\xBA\0\xBF\0\xC4\0\xC9\0\xCE\0\xD3\0\xD8\0\xDD\0\xE2\0\xE7\0\xEC\0\xF1\0\xF6\0\xFB\0\0\x01\x05\x01\n\x01\x0F\x01\x14\x01\x19\x01\x1E\x01#\x01(\x01-\x012\x017\x01<\x01A\x01F\x01K\x01P\x01U\x01Z\x01_\x01d\x01i\x01n\x01s\x01x\x01}\x01\x82\x01\x87\x01\x8C\x01\x91\x01\x96\x01\x9B\x01\xA0\x01\xA5\x01\xAA\x01\xAF\x01\xB4\x01\xB9\x01\xBE\x01\xC3\x01\xC8\x01\xCD\x01\xD2\x01\xD7\x01\xDC\x01\xE1\x01\xE6\x01\xEB\x01\xF0\x01\xF5\x01\xFA\x01\xFF\x01\x04\x02\t\x02\x0E\x02\x13\x02\x18\x02\x1D\x02\"\x02'\x02,\x021\x026\x02;\x02@\x02E\x02J\x02O\x02T\x02Y\x02^\x02c\x02h\x02m\x02r\x02w\x02|\x02\x81\x02\x88\x02\x8A\x02\x8C\x02\x8E\x02\x93\x02\x98\x02\x9D\x02\xA2\x02\xA7\x02\xAC\x02\xB1\x02\xB6\x02\xBB\x02\xC0\x02\xC5\x02\xCA\x02\xD2\x02\xDA\x02en-150en-AGen-AIen-ATen-AUen-BBen-BEen-BMen-BSen-BWen-BZen-CCen-CHen-CKen-CMen-CXen-CYen-CZen-DEen-DGen-DKen-DMen-ERen-ESen-FIen-FJen-FKen-FMen-FRen-GBen-GDen-GGen-GHen-GIen-GMen-GSen-GYen-HKen-HUen-IDen-IEen-ILen-IMen-INen-IOen-ITen-JEen-JMen-KEen-KIen-KNen-KYen-LCen-LRen-LSen-MGen-MOen-MSen-MTen-MUen-MVen-MWen-MYen-NAen-NFen-NGen-NLen-NOen-NRen-NUen-NZen-PGen-PKen-PLen-PNen-PTen-PWen-ROen-RWen-SBen-SCen-SDen-SEen-SGen-SHen-SIen-SKen-SLen-SSen-SXen-SZen-TCen-TKen-TOen-TTen-TVen-TZen-UGen-VCen-VGen-VUen-WSen-ZAen-ZMen-ZWes-ARes-BOes-BRes-BZes-CLes-COes-CRes-CUes-DOes-ECes-GTes-HNes-JPes-MXes-NIes-PAes-PEes-PRes-PYes-SVes-USes-UYes-VEhi-Latnhtnbnnno-NOpt-AOpt-CHpt-CVpt-FRpt-GQpt-GWpt-LUpt-MOpt-MZpt-STpt-TLund-Hansund-Hantzh-Hant-MO") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419en\0\0\0\0\0\0\x01IN\0fr\0\0\0\0\0\0\x01HT\0no\0\0\0\0\0\0\0\0\0\0no\0\0\0\0\0\0\0\0\0\0no\0\0\0\0\0\0\0\0\0\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0und\x01Hani\0\0\0\0und\x01Hani\0\0\0\0zh\0\x01Hant\x01HK\0") })
-                },
-            };
-        }
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::DataProvider<icu_locale::provider::LocaleParentsV1> for $provider {
-            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu_locale::provider::LocaleParentsV1>, icu_provider::DataError> {
-                if req.id.locale.is_unknown() {
-                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCALE_PARENTS_V1), metadata: icu_provider::DataResponseMetadata::default() })
-                } else {
-                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu_locale::provider::LocaleParentsV1 as icu_provider::DataMarker>::INFO, req))
-                }
-            }
-        }
-    };
-    ($ provider : ty , ITER) => {
-        __impl_locale_parents_v1!($provider);
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::IterableDataProvider<icu_locale::provider::LocaleParentsV1> for $provider {
-            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
-                Ok([Default::default()].into_iter().collect())
-            }
-        }
-    };
-    ($ provider : ty , DRY) => {
-        __impl_locale_parents_v1!($provider);
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::DryDataProvider<icu_locale::provider::LocaleParentsV1> for $provider {
-            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
-                if req.id.locale.is_unknown() {
-                    Ok(icu_provider::DataResponseMetadata::default())
-                } else {
-                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu_locale::provider::LocaleParentsV1 as icu_provider::DataMarker>::INFO, req))
-                }
-            }
-        }
-    };
-    ($ provider : ty , DRY , ITER) => {
-        __impl_locale_parents_v1!($provider);
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::DryDataProvider<icu_locale::provider::LocaleParentsV1> for $provider {
-            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
-                if req.id.locale.is_unknown() {
-                    Ok(icu_provider::DataResponseMetadata::default())
-                } else {
-                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu_locale::provider::LocaleParentsV1 as icu_provider::DataMarker>::INFO, req))
-                }
-            }
-        }
-        #[clippy::msrv = "1.82"]
-        impl icu_provider::IterableDataProvider<icu_locale::provider::LocaleParentsV1> for $provider {
-            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
-                Ok([Default::default()].into_iter().collect())
-            }
-        }
-    };
-}
-#[doc(inline)]
-pub use __impl_locale_parents_v1 as impl_locale_parents_v1;
diff --git a/compiler/rustc_baked_icu_data/src/data/mod.rs b/compiler/rustc_baked_icu_data/src/data/mod.rs
index e8194680b01..3146188a8e7 100644
--- a/compiler/rustc_baked_icu_data/src/data/mod.rs
+++ b/compiler/rustc_baked_icu_data/src/data/mod.rs
@@ -1,6 +1,4 @@
 // @generated
-include!("locale_likely_subtags_language_v1.rs.data");
-include!("locale_parents_v1.rs.data");
 include!("list_and_v1.rs.data");
 /// Marks a type as a data provider. You can then use macros like
 /// `impl_core_helloworld_v1` to add implementations.
@@ -29,8 +27,7 @@ macro_rules! __make_provider {
 pub use __make_provider as make_provider;
 /// This macro requires the following crates:
 /// * `icu_list`
-/// * `icu_locale`
-/// * `icu_locale_core`
+/// * `icu_locale/compiled_data`
 /// * `icu_provider`
 /// * `icu_provider/baked`
 /// * `zerovec`
@@ -38,8 +35,6 @@ pub use __make_provider as make_provider;
 macro_rules! impl_data_provider {
     ($ provider : ty) => {
         make_provider!($provider);
-        impl_locale_likely_subtags_language_v1!($provider);
-        impl_locale_parents_v1!($provider);
         impl_list_and_v1!($provider);
     };
 }
diff --git a/compiler/rustc_baked_icu_data/src/lib.rs b/compiler/rustc_baked_icu_data/src/lib.rs
index 5d40c32023f..ea4c8242c62 100644
--- a/compiler/rustc_baked_icu_data/src/lib.rs
+++ b/compiler/rustc_baked_icu_data/src/lib.rs
@@ -16,8 +16,7 @@
 //! ```text
 //! icu4x-datagen -W --pretty --use-separate-crates \
 //! --format baked --locales @en @es @fr @it @ja @pt @ru @tr @zh @zh-Hans @zh-Hant \
-//! -m ListAndV1 LocaleLikelySubtagsLanguageV1 LocaleParentsV1 \
-//! --no-internal-fallback --deduplication maximal -o src/data
+//! -m ListAndV1 -o src/data
 //! ```
 
 // tidy-alphabetical-start
@@ -33,7 +32,6 @@ pub struct BakedDataProvider;
 
 include!("data/mod.rs");
 const _: () = {
-    use icu_provider::prelude::icu_locale_core;
     impl_data_provider!(BakedDataProvider);
 };
 
diff --git a/compiler/rustc_error_messages/Cargo.toml b/compiler/rustc_error_messages/Cargo.toml
index b9f97a60fc3..7d2dc20e136 100644
--- a/compiler/rustc_error_messages/Cargo.toml
+++ b/compiler/rustc_error_messages/Cargo.toml
@@ -9,7 +9,6 @@ fluent-bundle = "0.16"
 fluent-syntax = "0.12"
 icu_list = { version = "2.0", default-features = false, features = ["alloc"] }
 icu_locale = { version = "2.0", default-features = false }
-icu_provider_adapters = "2.0"
 intl-memoizer = "0.5.1"
 rustc_ast = { path = "../rustc_ast" }
 rustc_ast_pretty = { path = "../rustc_ast_pretty" }
diff --git a/compiler/rustc_error_messages/src/lib.rs b/compiler/rustc_error_messages/src/lib.rs
index abc298ed4a3..7b7843f6cf3 100644
--- a/compiler/rustc_error_messages/src/lib.rs
+++ b/compiler/rustc_error_messages/src/lib.rs
@@ -567,18 +567,10 @@ pub fn fluent_value_from_str_list_sep_by_and(l: Vec<Cow<'_, str>>) -> FluentValu
         where
             Self: Sized,
         {
-            let baked_data_provider = rustc_baked_icu_data::baked_data_provider();
-            let locale_fallbacker =
-                icu_locale::LocaleFallbacker::try_new_unstable(&baked_data_provider)
-                    .expect("Failed to create fallback provider");
-            let data_provider = icu_provider_adapters::fallback::LocaleFallbackProvider::new(
-                baked_data_provider,
-                locale_fallbacker,
-            );
             let locale = icu_locale_from_unic_langid(lang)
                 .unwrap_or_else(|| rustc_baked_icu_data::supported_locales::EN);
             let list_formatter = icu_list::ListFormatter::try_new_and_unstable(
-                &data_provider,
+                &rustc_baked_icu_data::BakedDataProvider,
                 locale.into(),
                 icu_list::options::ListFormatterOptions::default()
                     .with_length(icu_list::options::ListLength::Wide),
diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs
index cf4156892e9..6974ede624a 100644
--- a/src/tools/tidy/src/deps.rs
+++ b/src/tools/tidy/src/deps.rs
@@ -291,8 +291,8 @@ const PERMITTED_RUSTC_DEPENDENCIES: &[&str] = &[
     "icu_list",
     "icu_locale",
     "icu_locale_core",
+    "icu_locale_data",
     "icu_provider",
-    "icu_provider_adapters",
     "ident_case",
     "indexmap",
     "intl-memoizer",