From 80d50e135c318d1b68c43426d5ada816c694755d Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Fri, 7 Jul 2023 16:06:12 +0200 Subject: [PATCH 01/11] mv --- Cargo.lock | 1 + .../data/macros/datetime_week_data_v1.data.rs | 2 +- .../data/data/macros/collator_data_v1.data.rs | 2 +- .../data/data/macros/collator_meta_v1.data.rs | 2 +- .../data/macros/collator_reord_v1.data.rs | 2 +- .../datetime_buddhist_datelengths_v1.data.rs | 2 +- .../datetime_buddhist_datesymbols_v1.data.rs | 2 +- .../datetime_coptic_datelengths_v1.data.rs | 2 +- .../datetime_coptic_datesymbols_v1.data.rs | 2 +- .../datetime_ethiopic_datelengths_v1.data.rs | 2 +- .../datetime_ethiopic_datesymbols_v1.data.rs | 2 +- .../datetime_gregory_datelengths_v1.data.rs | 2 +- .../datetime_gregory_datesymbols_v1.data.rs | 2 +- .../datetime_indian_datelengths_v1.data.rs | 2 +- .../datetime_indian_datesymbols_v1.data.rs | 2 +- .../datetime_japanese_datelengths_v1.data.rs | 2 +- .../datetime_japanese_datesymbols_v1.data.rs | 2 +- .../datetime_japanext_datelengths_v1.data.rs | 2 +- .../datetime_japanext_datesymbols_v1.data.rs | 2 +- .../data/macros/datetime_skeletons_v1.data.rs | 2 +- .../macros/datetime_timelengths_v1.data.rs | 2 +- .../macros/datetime_timesymbols_v1.data.rs | 2 +- .../time_zone_exemplar_cities_v1.data.rs | 2 +- .../data/macros/time_zone_formats_v1.data.rs | 2 +- .../macros/time_zone_generic_long_v1.data.rs | 2 +- .../macros/time_zone_generic_short_v1.data.rs | 2 +- .../macros/time_zone_specific_long_v1.data.rs | 2 +- .../time_zone_specific_short_v1.data.rs | 2 +- .../data/macros/decimal_symbols_v1.data.rs | 2 +- .../list/data/data/macros/list_and_v1.data.rs | 2 +- .../list/data/data/macros/list_or_v1.data.rs | 2 +- .../data/data/macros/list_unit_v1.data.rs | 2 +- components/locid/Cargo.toml | 1 + components/locid/src/fallback.rs | 221 ++++++++++++++++++ components/locid/src/lib.rs | 1 + .../src/fallback/algorithms.rs | 9 +- .../locid_transform/src/fallback/mod.rs | 197 +--------------- .../data/macros/plurals_cardinal_v1.data.rs | 2 +- .../data/macros/plurals_ordinal_v1.data.rs | 2 +- .../props_exemplarchars_auxiliary_v1.data.rs | 2 +- .../props_exemplarchars_index_v1.data.rs | 2 +- .../props_exemplarchars_main_v1.data.rs | 2 +- .../props_exemplarchars_numbers_v1.data.rs | 2 +- ...props_exemplarchars_punctuation_v1.data.rs | 2 +- .../macros/compactdecimal_long_v1.data.rs | 2 +- .../macros/compactdecimal_short_v1.data.rs | 2 +- .../macros/displaynames_languages_v1.data.rs | 2 +- .../macros/displaynames_locales_v1.data.rs | 2 +- .../macros/displaynames_regions_v1.data.rs | 2 +- .../macros/displaynames_scripts_v1.data.rs | 2 +- .../macros/displaynames_variants_v1.data.rs | 2 +- .../macros/relativetime_long_day_v1.data.rs | 2 +- .../macros/relativetime_long_hour_v1.data.rs | 2 +- .../relativetime_long_minute_v1.data.rs | 2 +- .../macros/relativetime_long_month_v1.data.rs | 2 +- .../relativetime_long_quarter_v1.data.rs | 2 +- .../relativetime_long_second_v1.data.rs | 2 +- .../macros/relativetime_long_week_v1.data.rs | 2 +- .../macros/relativetime_long_year_v1.data.rs | 2 +- .../macros/relativetime_narrow_day_v1.data.rs | 2 +- .../relativetime_narrow_hour_v1.data.rs | 2 +- .../relativetime_narrow_minute_v1.data.rs | 2 +- .../relativetime_narrow_month_v1.data.rs | 2 +- .../relativetime_narrow_quarter_v1.data.rs | 2 +- .../relativetime_narrow_second_v1.data.rs | 2 +- .../relativetime_narrow_week_v1.data.rs | 2 +- .../relativetime_narrow_year_v1.data.rs | 2 +- .../macros/relativetime_short_day_v1.data.rs | 2 +- .../macros/relativetime_short_hour_v1.data.rs | 2 +- .../relativetime_short_minute_v1.data.rs | 2 +- .../relativetime_short_month_v1.data.rs | 2 +- .../relativetime_short_quarter_v1.data.rs | 2 +- .../relativetime_short_second_v1.data.rs | 2 +- .../macros/relativetime_short_week_v1.data.rs | 2 +- .../macros/relativetime_short_year_v1.data.rs | 2 +- .../cpp/docs/source/fallbacker_ffi.rst | 4 +- .../cpp/include/ICU4XLocaleFallbackConfig.hpp | 2 +- .../include/ICU4XLocaleFallbackPriority.hpp | 2 +- .../js/docs/source/fallbacker_ffi.rst | 4 +- .../js/include/ICU4XLocaleFallbackConfig.d.ts | 2 +- .../include/ICU4XLocaleFallbackPriority.d.ts | 2 +- ffi/diplomat/src/fallbacker.rs | 16 +- ffi/diplomat/tests/missing_apis.txt | 2 +- provider/adapters/src/fallback/mod.rs | 6 +- provider/core/src/key.rs | 53 +---- provider/core/src/lib.rs | 8 +- provider/datagen/src/baked_exporter.rs | 3 +- provider/macros/src/lib.rs | 58 ++--- provider/macros/src/tests.rs | 14 +- 89 files changed, 375 insertions(+), 369 deletions(-) create mode 100644 components/locid/src/fallback.rs diff --git a/Cargo.lock b/Cargo.lock index f6b95bb9d12..9f35e31b3b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1747,6 +1747,7 @@ dependencies = [ "iai", "icu", "icu_benchmark_macros", + "icu_locid_transform", "litemap", "postcard", "serde", diff --git a/components/calendar/data/data/macros/datetime_week_data_v1.data.rs b/components/calendar/data/data/macros/datetime_week_data_v1.data.rs index 561f500c749..3370d499ad3 100644 --- a/components/calendar/data/data/macros/datetime_week_data_v1.data.rs +++ b/components/calendar/data/data/macros/datetime_week_data_v1.data.rs @@ -21,7 +21,7 @@ macro_rules! __impl_datetime_week_data_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/collator/data/data/macros/collator_data_v1.data.rs b/components/collator/data/data/macros/collator_data_v1.data.rs index 7ba6fc50cb0..f9c7f832dad 100644 --- a/components/collator/data/data/macros/collator_data_v1.data.rs +++ b/components/collator/data/data/macros/collator_data_v1.data.rs @@ -99,7 +99,7 @@ macro_rules! __impl_collator_data_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/collator/data/data/macros/collator_meta_v1.data.rs b/components/collator/data/data/macros/collator_meta_v1.data.rs index c5f57efa6b5..f5b0a56d898 100644 --- a/components/collator/data/data/macros/collator_meta_v1.data.rs +++ b/components/collator/data/data/macros/collator_meta_v1.data.rs @@ -24,7 +24,7 @@ macro_rules! __impl_collator_meta_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/collator/data/data/macros/collator_reord_v1.data.rs b/components/collator/data/data/macros/collator_reord_v1.data.rs index 5f4bc4cfe25..e704f77e2e3 100644 --- a/components/collator/data/data/macros/collator_reord_v1.data.rs +++ b/components/collator/data/data/macros/collator_reord_v1.data.rs @@ -44,7 +44,7 @@ macro_rules! __impl_collator_reord_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs index 074438be321..a69c2e9de4c 100644 --- a/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs @@ -145,7 +145,7 @@ macro_rules! __impl_datetime_buddhist_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs index 71b145a9107..c4703ae644f 100644 --- a/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs @@ -2895,7 +2895,7 @@ macro_rules! __impl_datetime_buddhist_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs index 59a5b3ac112..863ac1565f6 100644 --- a/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_coptic_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs index 2e69246d3ab..762b01e7e7d 100644 --- a/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs @@ -5209,7 +5209,7 @@ macro_rules! __impl_datetime_coptic_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs index 69552697cb3..11883deae61 100644 --- a/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_ethiopic_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs index ef7f3d7b86b..3228ca75c86 100644 --- a/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs @@ -5233,7 +5233,7 @@ macro_rules! __impl_datetime_ethiopic_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs index ac0f85fffe2..99f80b098f5 100644 --- a/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs @@ -157,7 +157,7 @@ macro_rules! __impl_datetime_gregory_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs index aa160858608..a471e9c6465 100644 --- a/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs @@ -2967,7 +2967,7 @@ macro_rules! __impl_datetime_gregory_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs index 631cc34c9a9..476e3bba256 100644 --- a/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs @@ -148,7 +148,7 @@ macro_rules! __impl_datetime_indian_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs index a8a7586f8c9..29cdbf6e37a 100644 --- a/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs @@ -2679,7 +2679,7 @@ macro_rules! __impl_datetime_indian_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs index 467d428e17d..33180346841 100644 --- a/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs @@ -125,7 +125,7 @@ macro_rules! __impl_datetime_japanese_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs index f66590b96d2..b87ddc2b2e8 100644 --- a/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs @@ -2967,7 +2967,7 @@ macro_rules! __impl_datetime_japanese_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs index 125e73808f0..2556c0daea6 100644 --- a/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs @@ -125,7 +125,7 @@ macro_rules! __impl_datetime_japanext_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs index cab74608617..7e26dea59c7 100644 --- a/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs @@ -2967,7 +2967,7 @@ macro_rules! __impl_datetime_japanext_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs b/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs index b08e9edd330..c1cb9edc3e2 100644 --- a/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs @@ -373,7 +373,7 @@ macro_rules! __impl_datetime_skeletons_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs index 1213fdf2f87..622379910c8 100644 --- a/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs @@ -72,7 +72,7 @@ macro_rules! __impl_datetime_timelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs index 800a0e96ba9..509a950e748 100644 --- a/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs @@ -158,7 +158,7 @@ macro_rules! __impl_datetime_timesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs b/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs index 40ac9ca1b54..1ef37bfe744 100644 --- a/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs @@ -607,7 +607,7 @@ macro_rules! __impl_time_zone_exemplar_cities_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_formats_v1.data.rs b/components/datetime/data/data/macros/time_zone_formats_v1.data.rs index 9063d75329e..19d7ff053d7 100644 --- a/components/datetime/data/data/macros/time_zone_formats_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_formats_v1.data.rs @@ -1623,7 +1623,7 @@ macro_rules! __impl_time_zone_formats_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs b/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs index 27c92cd0985..73ea1c25930 100644 --- a/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs @@ -1505,7 +1505,7 @@ macro_rules! __impl_time_zone_generic_long_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs b/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs index 40bc3760830..f19fe8ab65b 100644 --- a/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs @@ -585,7 +585,7 @@ macro_rules! __impl_time_zone_generic_short_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs b/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs index 5ca8f4bca7b..7c77b5111e7 100644 --- a/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs @@ -1505,7 +1505,7 @@ macro_rules! __impl_time_zone_specific_long_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs b/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs index 721266d112d..696cf078ed8 100644 --- a/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs @@ -575,7 +575,7 @@ macro_rules! __impl_time_zone_specific_short_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/decimal/data/data/macros/decimal_symbols_v1.data.rs b/components/decimal/data/data/macros/decimal_symbols_v1.data.rs index 5c81ffd0dca..cd3ca668d0c 100644 --- a/components/decimal/data/data/macros/decimal_symbols_v1.data.rs +++ b/components/decimal/data/data/macros/decimal_symbols_v1.data.rs @@ -56,7 +56,7 @@ macro_rules! __impl_decimal_symbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/list/data/data/macros/list_and_v1.data.rs b/components/list/data/data/macros/list_and_v1.data.rs index 881602307a0..743ad931298 100644 --- a/components/list/data/data/macros/list_and_v1.data.rs +++ b/components/list/data/data/macros/list_and_v1.data.rs @@ -121,7 +121,7 @@ macro_rules! __impl_list_and_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/list/data/data/macros/list_or_v1.data.rs b/components/list/data/data/macros/list_or_v1.data.rs index 27ee76fbafa..63a6cb3b68e 100644 --- a/components/list/data/data/macros/list_or_v1.data.rs +++ b/components/list/data/data/macros/list_or_v1.data.rs @@ -104,7 +104,7 @@ macro_rules! __impl_list_or_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/list/data/data/macros/list_unit_v1.data.rs b/components/list/data/data/macros/list_unit_v1.data.rs index 571849ba758..e2fd50928c5 100644 --- a/components/list/data/data/macros/list_unit_v1.data.rs +++ b/components/list/data/data/macros/list_unit_v1.data.rs @@ -87,7 +87,7 @@ macro_rules! __impl_list_unit_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/locid/Cargo.toml b/components/locid/Cargo.toml index 309eb276e9a..b93b3e545d1 100644 --- a/components/locid/Cargo.toml +++ b/components/locid/Cargo.toml @@ -47,6 +47,7 @@ litemap = { path = "../../utils/litemap", features = ["testing"]} postcard = { version = "1.0.0", default-features = false, features = ["use-std"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" +icu_locid_transform = { path = "../locid_transform", version = "1.2" } [features] std = [] diff --git a/components/locid/src/fallback.rs b/components/locid/src/fallback.rs new file mode 100644 index 00000000000..87a2e60883d --- /dev/null +++ b/components/locid/src/fallback.rs @@ -0,0 +1,221 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +//! Options to define fallback behaviour. +//! +//! These options are consumed by the `LocaleFallbacker` in the `icu_locid_transforms` crate +//! (or the `icu::locid_transforms` module), but are defined here because they are used in +//! the ICU4X data pipeline, which `icu_locid_transform` depends on itself. + +use crate::extensions::unicode::Key; + +/// Hint for which subtag to prioritize during fallback. +/// +/// For example, `"en-US"` might fall back to either `"en"` or `"und-US"` depending +/// on this enum. +#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] +#[non_exhaustive] +pub enum FallbackPriority { + /// Prioritize the language. This is the default behavior. + /// + /// For example, `"en-US"` should go to `"en"` and then `"und"`. + Language, + /// Prioritize the region. + /// + /// For example, `"en-US"` should go to `"und-US"` and then `"und"`. + Region, + /// Collation-specific fallback rules. Similar to language priority. + /// + /// For example, `"zh-Hant"` goes to `"zh"` before `"und"`. + Collation, +} + +impl FallbackPriority { + /// Const-friendly version of [`Default::default`]. + pub const fn const_default() -> Self { + Self::Language + } +} + +impl Default for FallbackPriority { + fn default() -> Self { + Self::const_default() + } +} + +/// What additional data is required to load when performing fallback. +#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] +#[non_exhaustive] +pub enum FallbackSupplement { + /// Collation supplement + Collation, +} + +/// Configuration settings for a particular fallback operation. +#[derive(Debug, Clone, PartialEq, Eq, Copy)] +#[non_exhaustive] +pub struct LocaleFallbackConfig { + /// Strategy for choosing which subtags to drop during locale fallback. + /// + /// # Examples + /// + /// Retain the language and script subtags until the final step: + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid::fallback::FallbackPriority; + /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = + /// LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.priority = FallbackPriority::Language; + /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("ca-ES-valencia").into()); + /// + /// // Run the algorithm and check the results. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("ca-ES-valencia").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + /// + /// Retain the region subtag until the final step: + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid::fallback::FallbackPriority; + /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = + /// LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.priority = FallbackPriority::Region; + /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("ca-ES-valencia").into()); + /// + /// // Run the algorithm and check the results. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("ca-ES-valencia").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); + /// fallback_iterator.step(); + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("und-ES-valencia").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("und-ES").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + pub priority: FallbackPriority, + /// An extension keyword to retain during locale fallback. + /// + /// # Examples + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = + /// LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.extension_key = Some(icu_locid::extensions::unicode::key!("nu")); + /// let mut fallback_iterator = fallbacker + /// .for_config(config).fallback_for(locale!("ar-EG-u-nu-latn").into()); + /// + /// // Run the algorithm and check the results. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("ar-EG-u-nu-latn").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ar-EG").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ar-u-nu-latn").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ar").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + pub extension_key: Option, + /// Fallback supplement data key to customize fallback rules. + /// + /// For example, most data keys for collation add additional parent locales, such as + /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback. + /// + /// Currently the only supported fallback supplement is `FallbackSupplement::Collation`, but more may be + /// added in the future. + /// + /// # Examples + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid::fallback::FallbackPriority; + /// use icu_locid::fallback::FallbackSupplement; + /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// use tinystr::tinystr; + /// + /// // Set up the fallback iterator. + /// let fallbacker = + /// LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.priority = FallbackPriority::Collation; + /// config.fallback_supplement = Some(FallbackSupplement::Collation); + /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("yue-HK").into()); + /// + /// // Run the algorithm and check the results. + /// // TODO(#1964): add "zh" as a target. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("yue-HK").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("yue").into()); + /// fallback_iterator.step(); + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("zh-Hant").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + pub fallback_supplement: Option, +} + +impl LocaleFallbackConfig { + /// Const version of [`Default::default`]. + pub const fn const_default() -> Self { + Self { + priority: FallbackPriority::const_default(), + extension_key: None, + fallback_supplement: None, + } + } +} + +impl Default for LocaleFallbackConfig { + fn default() -> Self { + Self::const_default() + } +} diff --git a/components/locid/src/lib.rs b/components/locid/src/lib.rs index d75fd2ea93a..37176edc03d 100644 --- a/components/locid/src/lib.rs +++ b/components/locid/src/lib.rs @@ -81,6 +81,7 @@ pub use parser::errors::ParserError; pub use ParserError as Error; pub mod extensions; +pub mod fallback; #[macro_use] pub mod subtags; pub mod zerovec; diff --git a/components/locid_transform/src/fallback/algorithms.rs b/components/locid_transform/src/fallback/algorithms.rs index c35bb251d9f..046717f2431 100644 --- a/components/locid_transform/src/fallback/algorithms.rs +++ b/components/locid_transform/src/fallback/algorithms.rs @@ -417,11 +417,10 @@ mod tests { (FallbackPriority::Language, cas.expected_language_chain), (FallbackPriority::Region, cas.expected_region_chain), ] { - let config = LocaleFallbackConfig { - priority, - extension_key: cas.extension_key, - fallback_supplement: cas.fallback_supplement, - }; + let mut config = LocaleFallbackConfig::default(); + config.priority = priority; + config.extension_key = cas.extension_key; + config.fallback_supplement = cas.fallback_supplement; let fallbacker = if cas.requires_data { fallbacker_with_data } else { diff --git a/components/locid_transform/src/fallback/mod.rs b/components/locid_transform/src/fallback/mod.rs index d846a4d9348..6b2a438cb4d 100644 --- a/components/locid_transform/src/fallback/mod.rs +++ b/components/locid_transform/src/fallback/mod.rs @@ -40,204 +40,13 @@ //! ``` use crate::provider::*; -use icu_locid::extensions::unicode::{Key, Value}; +use icu_locid::extensions::unicode::Value; +use icu_locid::fallback::{FallbackSupplement, LocaleFallbackConfig}; use icu_locid::subtags::Variants; use icu_provider::prelude::*; -pub use icu_provider::{FallbackPriority, FallbackSupplement}; - mod algorithms; -/// Configuration settings for a particular fallback operation. -#[derive(Debug, Clone, PartialEq, Eq, Copy)] -#[non_exhaustive] -pub struct LocaleFallbackConfig { - /// Strategy for choosing which subtags to drop during locale fallback. - /// - /// # Examples - /// - /// Retain the language and script subtags until the final step: - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// - /// // Set up the fallback iterator. - /// let fallbacker = - /// LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Language; - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("ca-ES-valencia").into()); - /// - /// // Run the algorithm and check the results. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("ca-ES-valencia").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - /// - /// Retain the region subtag until the final step: - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// - /// // Set up the fallback iterator. - /// let fallbacker = - /// LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Region; - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("ca-ES-valencia").into()); - /// - /// // Run the algorithm and check the results. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("ca-ES-valencia").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); - /// fallback_iterator.step(); - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("und-ES-valencia").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("und-ES").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - pub priority: FallbackPriority, - /// An extension keyword to retain during locale fallback. - /// - /// # Examples - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// - /// // Set up the fallback iterator. - /// let fallbacker = - /// LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.extension_key = Some(icu_locid::extensions::unicode::key!("nu")); - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("ar-EG-u-nu-latn").into()); - /// - /// // Run the algorithm and check the results. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("ar-EG-u-nu-latn").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ar-EG").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ar-u-nu-latn").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ar").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - pub extension_key: Option, - /// Fallback supplement data key to customize fallback rules. - /// - /// For example, most data keys for collation add additional parent locales, such as - /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback. - /// - /// Currently the only supported fallback supplement is `FallbackSupplement::Collation`, but more may be - /// added in the future. - /// - /// # Examples - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::FallbackSupplement; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// use tinystr::tinystr; - /// - /// // Set up the fallback iterator. - /// let fallbacker = - /// LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Collation; - /// config.fallback_supplement = Some(FallbackSupplement::Collation); - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("yue-HK").into()); - /// - /// // Run the algorithm and check the results. - /// // TODO(#1964): add "zh" as a target. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("yue-HK").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("yue").into()); - /// fallback_iterator.step(); - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("zh-Hant").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - pub fallback_supplement: Option, -} - -impl LocaleFallbackConfig { - /// Const version of [`Default::default`]. - pub const fn const_default() -> Self { - Self { - priority: FallbackPriority::const_default(), - extension_key: None, - fallback_supplement: None, - } - } - - /// Creates a [`LocaleFallbackConfig`] for a [`DataKey`]. - pub const fn from_key(key: DataKey) -> Self { - Self { - priority: key.metadata().fallback_priority, - extension_key: key.metadata().extension_key, - fallback_supplement: key.metadata().fallback_supplement, - } - } -} - -impl Default for LocaleFallbackConfig { - fn default() -> Self { - Self::const_default() - } -} - -impl From for LocaleFallbackConfig { - fn from(key: DataKey) -> Self { - Self::from_key(key) - } -} - /// Entry type for locale fallbacking. /// /// See the module-level documentation for an example. @@ -366,7 +175,7 @@ impl LocaleFallbacker { #[inline] #[doc(hidden)] // will be removed in 2.0 pub fn for_key(&self, data_key: DataKey) -> LocaleFallbackerWithConfig { - self.for_config(data_key.into()) + self.for_config(data_key.fallback_config()) } /// Creates a borrowed version of this fallbacker for performance. diff --git a/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs b/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs index dc061763501..d1dcf04c4b9 100644 --- a/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs +++ b/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs @@ -47,7 +47,7 @@ macro_rules! __impl_plurals_cardinal_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs b/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs index 74f7ffc23bb..7d0cecbb3f0 100644 --- a/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs +++ b/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs @@ -37,7 +37,7 @@ macro_rules! __impl_plurals_ordinal_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs index a782e019a99..b6105240857 100644 --- a/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs @@ -827,7 +827,7 @@ macro_rules! __impl_props_exemplarchars_auxiliary_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs index a8ab08e1ef3..cc25025f5d9 100644 --- a/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs @@ -694,7 +694,7 @@ macro_rules! __impl_props_exemplarchars_index_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs index f02bad7781a..8384e403c44 100644 --- a/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs @@ -904,7 +904,7 @@ macro_rules! __impl_props_exemplarchars_main_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs index 6fd1d78e4b9..c502fe52a8c 100644 --- a/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs @@ -197,7 +197,7 @@ macro_rules! __impl_props_exemplarchars_numbers_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs index b1519a3c53b..70611895864 100644 --- a/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs @@ -491,7 +491,7 @@ macro_rules! __impl_props_exemplarchars_punctuation_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs b/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs index c260ae5a92d..a11c35278eb 100644 --- a/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs +++ b/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs @@ -699,7 +699,7 @@ macro_rules! __impl_compactdecimal_long_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs b/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs index 3939cbdf4bb..9ea1a1f17c5 100644 --- a/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs +++ b/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs @@ -615,7 +615,7 @@ macro_rules! __impl_compactdecimal_short_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs index 947527d743d..42581a838f1 100644 --- a/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs @@ -3021,7 +3021,7 @@ macro_rules! __impl_displaynames_languages_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs index a1f9858ffca..ceb0ec9a5d2 100644 --- a/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs @@ -2733,7 +2733,7 @@ macro_rules! __impl_displaynames_locales_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs index 2da766f2dda..8b1889a79b2 100644 --- a/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs @@ -1665,7 +1665,7 @@ macro_rules! __impl_displaynames_regions_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs index 6021455fa89..1bae209d308 100644 --- a/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs @@ -1455,7 +1455,7 @@ macro_rules! __impl_displaynames_scripts_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs index 4c2b4ef238f..1a331404725 100644 --- a/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs @@ -507,7 +507,7 @@ macro_rules! __impl_displaynames_variants_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs index 65f91f26b35..889039a4276 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs @@ -1103,7 +1103,7 @@ macro_rules! __impl_relativetime_long_day_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs index b180df04536..abc96dd975f 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs @@ -967,7 +967,7 @@ macro_rules! __impl_relativetime_long_hour_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs index c92912c624f..bc7a56d9e5e 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs @@ -975,7 +975,7 @@ macro_rules! __impl_relativetime_long_minute_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs index 113a02386aa..8f34fc164c6 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs @@ -1039,7 +1039,7 @@ macro_rules! __impl_relativetime_long_month_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs index fdc8ddfcb9d..4bb547e5885 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs @@ -975,7 +975,7 @@ macro_rules! __impl_relativetime_long_quarter_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs index 1015d8b2389..07972b6676f 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs @@ -975,7 +975,7 @@ macro_rules! __impl_relativetime_long_second_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs index 26be054871b..d0519a3ae0b 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs @@ -1055,7 +1055,7 @@ macro_rules! __impl_relativetime_long_week_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs index 12fb46064c1..6726e2181a6 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs @@ -1087,7 +1087,7 @@ macro_rules! __impl_relativetime_long_year_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs index c846c29ab17..b81e0a23240 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs @@ -1151,7 +1151,7 @@ macro_rules! __impl_relativetime_narrow_day_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs index 97b301ccd23..e35fd08de0a 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs @@ -1007,7 +1007,7 @@ macro_rules! __impl_relativetime_narrow_hour_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs index d7d1c48bd6e..1d3eff42015 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_narrow_minute_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs index b313b53240b..a03b2bb2c5d 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs @@ -1071,7 +1071,7 @@ macro_rules! __impl_relativetime_narrow_month_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs index 0d1477a582a..f2b269afd5a 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs @@ -1007,7 +1007,7 @@ macro_rules! __impl_relativetime_narrow_quarter_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs index 43d9297bd92..ce2339bcce4 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_narrow_second_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs index 72286b504f9..70eb29863fa 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs @@ -1079,7 +1079,7 @@ macro_rules! __impl_relativetime_narrow_week_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs index 22a96a7278a..a77c9404544 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs @@ -1095,7 +1095,7 @@ macro_rules! __impl_relativetime_narrow_year_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs index 0eaf13d934c..e6a42d0cfff 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs @@ -1143,7 +1143,7 @@ macro_rules! __impl_relativetime_short_day_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs index 7c92806ce53..a884ac864dc 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_short_hour_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs index 36f974ca00c..cc4acb22dbf 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_short_minute_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs index 7ad5778edf2..86a16bdc54c 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs @@ -1071,7 +1071,7 @@ macro_rules! __impl_relativetime_short_month_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs index f772b37e207..364566eeab9 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs @@ -999,7 +999,7 @@ macro_rules! __impl_relativetime_short_quarter_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs index 4850731adf0..7c52d0581d5 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs @@ -999,7 +999,7 @@ macro_rules! __impl_relativetime_short_second_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs index e6908e89556..9a8c892df8d 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs @@ -1087,7 +1087,7 @@ macro_rules! __impl_relativetime_short_week_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs index b94945d5072..897b4435492 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs @@ -1111,7 +1111,7 @@ macro_rules! __impl_relativetime_short_year_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst b/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst index 0e29e78038e..b591aaeeaf3 100644 --- a/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst +++ b/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst @@ -5,7 +5,7 @@ Collection of configurations for the ICU4X fallback algorithm. - See the `Rust documentation for LocaleFallbackConfig `__ for more information. + See the `Rust documentation for LocaleFallbackConfig `__ for more information. .. cpp:member:: ICU4XLocaleFallbackPriority priority @@ -43,7 +43,7 @@ Priority mode for the ICU4X fallback algorithm. - See the `Rust documentation for FallbackPriority `__ for more information. + See the `Rust documentation for FallbackPriority `__ for more information. .. cpp:enumerator:: Language diff --git a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp index 4325a86669a..b1757e0662b 100644 --- a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp +++ b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp @@ -17,7 +17,7 @@ /** * Collection of configurations for the ICU4X fallback algorithm. * - * See the [Rust documentation for `LocaleFallbackConfig`](https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackConfig.html) for more information. + * See the [Rust documentation for `LocaleFallbackConfig`](https://docs.rs/icu/latest/icu/locid/fallback/struct.LocaleFallbackConfig.html) for more information. */ struct ICU4XLocaleFallbackConfig { public: diff --git a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp index bde69bfaf5c..3ceb4184243 100644 --- a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp +++ b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp @@ -16,7 +16,7 @@ /** * Priority mode for the ICU4X fallback algorithm. * - * See the [Rust documentation for `FallbackPriority`](https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.FallbackPriority.html) for more information. + * See the [Rust documentation for `FallbackPriority`](https://docs.rs/icu/latest/icu/locid/fallback/enum.FallbackPriority.html) for more information. */ enum struct ICU4XLocaleFallbackPriority { Language = 0, diff --git a/ffi/diplomat/js/docs/source/fallbacker_ffi.rst b/ffi/diplomat/js/docs/source/fallbacker_ffi.rst index 36ff21207d2..091f7bedc92 100644 --- a/ffi/diplomat/js/docs/source/fallbacker_ffi.rst +++ b/ffi/diplomat/js/docs/source/fallbacker_ffi.rst @@ -5,7 +5,7 @@ Collection of configurations for the ICU4X fallback algorithm. - See the `Rust documentation for LocaleFallbackConfig `__ for more information. + See the `Rust documentation for LocaleFallbackConfig `__ for more information. .. js:attribute:: priority @@ -43,7 +43,7 @@ Priority mode for the ICU4X fallback algorithm. - See the `Rust documentation for FallbackPriority `__ for more information. + See the `Rust documentation for FallbackPriority `__ for more information. .. js:class:: ICU4XLocaleFallbacker diff --git a/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts b/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts index 30bc9d99f76..12d01b4b003 100644 --- a/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts +++ b/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts @@ -4,7 +4,7 @@ import { ICU4XLocaleFallbackPriority } from "./ICU4XLocaleFallbackPriority"; * Collection of configurations for the ICU4X fallback algorithm. - * See the {@link https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackConfig.html Rust documentation for `LocaleFallbackConfig`} for more information. + * See the {@link https://docs.rs/icu/latest/icu/locid/fallback/struct.LocaleFallbackConfig.html Rust documentation for `LocaleFallbackConfig`} for more information. */ export class ICU4XLocaleFallbackConfig { priority: ICU4XLocaleFallbackPriority; diff --git a/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts b/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts index 7fc6e575650..4ec0f7e79db 100644 --- a/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts +++ b/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts @@ -3,7 +3,7 @@ * Priority mode for the ICU4X fallback algorithm. - * See the {@link https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.FallbackPriority.html Rust documentation for `FallbackPriority`} for more information. + * See the {@link https://docs.rs/icu/latest/icu/locid/fallback/enum.FallbackPriority.html Rust documentation for `FallbackPriority`} for more information. */ export enum ICU4XLocaleFallbackPriority { /** diff --git a/ffi/diplomat/src/fallbacker.rs b/ffi/diplomat/src/fallbacker.rs index 4138942438e..d1961e5f74d 100644 --- a/ffi/diplomat/src/fallbacker.rs +++ b/ffi/diplomat/src/fallbacker.rs @@ -5,8 +5,8 @@ #[diplomat::bridge] pub mod ffi { use alloc::boxed::Box; - use icu_locid_transform::fallback::FallbackPriority; - use icu_locid_transform::fallback::LocaleFallbackConfig; + use icu_locid::fallback::FallbackPriority; + use icu_locid::fallback::LocaleFallbackConfig; use icu_locid_transform::fallback::LocaleFallbackIterator; use icu_locid_transform::fallback::LocaleFallbacker; use icu_locid_transform::fallback::LocaleFallbackerWithConfig; @@ -27,9 +27,9 @@ pub mod ffi { /// Priority mode for the ICU4X fallback algorithm. #[diplomat::enum_convert(FallbackPriority, needs_wildcard)] - #[diplomat::rust_link(icu::locid_transform::fallback::FallbackPriority, Enum)] + #[diplomat::rust_link(icu::locid::fallback::FallbackPriority, Enum)] #[diplomat::rust_link( - icu::locid_transform::fallback::FallbackPriority::const_default, + icu::locid::fallback::FallbackPriority::const_default, FnInEnum, hidden )] @@ -40,9 +40,9 @@ pub mod ffi { } /// Collection of configurations for the ICU4X fallback algorithm. - #[diplomat::rust_link(icu::locid_transform::fallback::LocaleFallbackConfig, Struct)] + #[diplomat::rust_link(icu::locid::fallback::LocaleFallbackConfig, Struct)] #[diplomat::rust_link( - icu::locid_transform::fallback::LocaleFallbackConfig::const_default, + icu::locid::fallback::LocaleFallbackConfig::const_default, FnInStruct, hidden )] @@ -159,9 +159,7 @@ pub mod ffi { } } -impl TryFrom> - for icu_locid_transform::fallback::LocaleFallbackConfig -{ +impl TryFrom> for icu_locid::fallback::LocaleFallbackConfig { type Error = crate::errors::ffi::ICU4XError; fn try_from(other: ffi::ICU4XLocaleFallbackConfig) -> Result { let mut result = Self::default(); diff --git a/ffi/diplomat/tests/missing_apis.txt b/ffi/diplomat/tests/missing_apis.txt index 4aa198e440b..5b721dd8729 100644 --- a/ffi/diplomat/tests/missing_apis.txt +++ b/ffi/diplomat/tests/missing_apis.txt @@ -19,6 +19,7 @@ icu::calendar::DateTime::try_new_persian_datetime#FnInStruct icu::calendar::persian::Persian#Struct icu::calendar::persian::Persian::new#FnInStruct icu::calendar::persian::PersianDateInner#Struct +icu::locid::fallback::FallbackSupplement#Enum icu::locid_transform::Direction#Enum icu::locid_transform::LocaleDirectionality#Struct icu::locid_transform::LocaleDirectionality::get#FnInStruct @@ -26,7 +27,6 @@ icu::locid_transform::LocaleDirectionality::is_left_to_right#FnInStruct icu::locid_transform::LocaleDirectionality::is_right_to_left#FnInStruct icu::locid_transform::LocaleDirectionality::new#FnInStruct icu::locid_transform::LocaleDirectionality::new_with_expander#FnInStruct -icu::locid_transform::fallback::FallbackSupplement#Enum icu::properties::bidi_data::BidiAuxiliaryProperties#Struct icu::properties::bidi_data::BidiAuxiliaryProperties::from_data#FnInStruct icu::properties::bidi_data::BidiAuxiliaryPropertiesBorrowed#Struct diff --git a/provider/adapters/src/fallback/mod.rs b/provider/adapters/src/fallback/mod.rs index b3c72560e3e..af5d465b96c 100644 --- a/provider/adapters/src/fallback/mod.rs +++ b/provider/adapters/src/fallback/mod.rs @@ -8,9 +8,11 @@ use crate::helpers::result_is_err_missing_locale; use icu_locid_transform::provider::*; use icu_provider::prelude::*; +#[doc(hidden)] // moved +pub use icu_locid::fallback::LocaleFallbackConfig; #[doc(hidden)] // moved pub use icu_locid_transform::fallback::{ - LocaleFallbackConfig, LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig, + LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig, }; /// A data provider wrapper that performs locale fallback. This enables arbitrary locales to be @@ -202,7 +204,7 @@ impl

LocaleFallbackProvider

{ } let mut fallback_iterator = self .fallbacker - .for_key(key) + .for_config(key.fallback_config()) .fallback_for(base_req.locale.clone()); let base_silent = core::mem::replace(&mut base_req.metadata.silent, true); loop { diff --git a/provider/core/src/key.rs b/provider/core/src/key.rs index 5a825beadf7..dcdc36bb9bb 100644 --- a/provider/core/src/key.rs +++ b/provider/core/src/key.rs @@ -8,6 +8,7 @@ use alloc::borrow::Cow; use core::fmt; use core::fmt::Write; use core::ops::Deref; +use icu_locid::fallback::{FallbackPriority, FallbackSupplement, LocaleFallbackConfig}; use writeable::{LengthHint, Writeable}; use zerovec::ule::*; @@ -158,48 +159,6 @@ impl AsULE for DataKeyHash { // Safe since the ULE type is `self`. unsafe impl EqULE for DataKeyHash {} -/// Hint for what to prioritize during fallback when data is unavailable. -/// -/// For example, if `"en-US"` is requested, but we have no data for that specific locale, -/// fallback may take us to `"en"` or `"und-US"` to check for data. -#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] -#[non_exhaustive] -pub enum FallbackPriority { - /// Prioritize the language. This is the default behavior. - /// - /// For example, `"en-US"` should go to `"en"` and then `"und"`. - Language, - /// Prioritize the region. - /// - /// For example, `"en-US"` should go to `"und-US"` and then `"und"`. - Region, - /// Collation-specific fallback rules. Similar to language priority. - /// - /// For example, `"zh-Hant"` goes to `"zh"` before `"und"`. - Collation, -} - -impl FallbackPriority { - /// Const-friendly version of [`Default::default`]. - pub const fn const_default() -> Self { - Self::Language - } -} - -impl Default for FallbackPriority { - fn default() -> Self { - Self::const_default() - } -} - -/// What additional data to load when performing fallback. -#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] -#[non_exhaustive] -pub enum FallbackSupplement { - /// Collation supplement; see `CollationFallbackSupplementV1Marker` - Collation, -} - /// The string path of a data key. For example, "foo@1" #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct DataKeyPath { @@ -381,6 +340,16 @@ impl DataKey { self.metadata } + /// Returns the [`LocaleFallbackConfig`] for this [`DataKey`]. + #[inline] + pub const fn fallback_config(self) -> LocaleFallbackConfig { + let mut config = LocaleFallbackConfig::const_default(); + config.priority = self.metadata.fallback_priority; + config.extension_key = self.metadata.extension_key; + config.fallback_supplement = self.metadata.fallback_supplement; + config + } + /// Constructs a [`DataKey`] from a path and metadata. /// /// # Examples diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index ce3263688c2..dd1b3061435 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -163,8 +163,6 @@ pub use crate::key::DataKey; pub use crate::key::DataKeyHash; pub use crate::key::DataKeyMetadata; pub use crate::key::DataKeyPath; -pub use crate::key::FallbackPriority; -pub use crate::key::FallbackSupplement; pub use crate::request::DataLocale; pub use crate::request::DataRequest; pub use crate::request::DataRequestMetadata; @@ -250,6 +248,10 @@ pub mod prelude { // Additional crate re-exports for compatibility #[doc(hidden)] +pub use icu_locid::fallback::FallbackPriority; +#[doc(hidden)] +pub use icu_locid::fallback::FallbackSupplement; +#[doc(hidden)] pub use yoke; #[doc(hidden)] pub use zerofrom; @@ -257,5 +259,5 @@ pub use zerofrom; // For macros #[doc(hidden)] pub mod _internal { - pub use icu_locid::extensions_unicode_key; + pub use icu_locid as locid; } diff --git a/provider/datagen/src/baked_exporter.rs b/provider/datagen/src/baked_exporter.rs index 2a8b86c639c..82b8efe46a2 100644 --- a/provider/datagen/src/baked_exporter.rs +++ b/provider/datagen/src/baked_exporter.rs @@ -510,8 +510,7 @@ impl DataExporter for BakedExporter { } else { const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new() - .for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key( - <#marker as icu_provider::KeyedDataMarker>::KEY)); + .for_config(<#marker as icu_provider::KeyedDataMarker>::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { #maybe_err diff --git a/provider/macros/src/lib.rs b/provider/macros/src/lib.rs index ea6baa8b93a..9569c8fdd6a 100644 --- a/provider/macros/src/lib.rs +++ b/provider/macros/src/lib.rs @@ -51,6 +51,13 @@ mod tests; /// by adding symbols with optional key strings: /// /// ``` +/// # // We DO NOT want to pull in the `icu` crate as a dev-dependency, +/// # // because that will rebuild the whole tree in proc macro mode +/// # // when using cargo test --all-features --all-targets. +/// # pub mod icu { +/// # pub use icu_provider::_internal::locid; +/// # } +/// use icu::locid::fallback::*; /// use icu_provider::prelude::*; /// use std::borrow::Cow; /// @@ -74,27 +81,15 @@ mod tests; /// assert_eq!(&*BarV1Marker::KEY.path(), "demo/bar@1"); /// assert_eq!( /// BarV1Marker::KEY.metadata().fallback_priority, -/// icu_provider::FallbackPriority::Language +/// FallbackPriority::Language /// ); /// assert_eq!(BarV1Marker::KEY.metadata().extension_key, None); /// /// assert_eq!(&*BazV1Marker::KEY.path(), "demo/baz@1"); /// assert_eq!( /// BazV1Marker::KEY.metadata().fallback_priority, -/// icu_provider::FallbackPriority::Region +/// FallbackPriority::Region /// ); -/// # // We DO NOT want to pull in the `icu` crate as a dev-dependency, -/// # // because that will rebuild the whole tree in proc macro mode -/// # // when using cargo test --all-features --all-targets. -/// # pub mod icu { -/// # pub mod locid { -/// # pub mod extensions { -/// # pub mod unicode { -/// # pub use icu_provider::_internal::extensions_unicode_key as key; -/// # } -/// # } -/// # } -/// # } /// assert_eq!( /// BazV1Marker::KEY.metadata().extension_key, /// Some(icu::locid::extensions::unicode::key!("ca")) @@ -357,28 +352,37 @@ fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { let key_str = key_lit.value(); let fallback_by_expr = if let Some(fallback_by_lit) = fallback_by { match fallback_by_lit.value().as_str() { - "region" => quote! {icu_provider::FallbackPriority::Region}, - "collation" => quote! {icu_provider::FallbackPriority::Collation}, - "language" => quote! {icu_provider::FallbackPriority::Language}, + "region" => { + quote! {icu_provider::_internal::locid::fallback::FallbackPriority::Region} + } + "collation" => { + quote! {icu_provider::_internal::locid::fallback::FallbackPriority::Collation} + } + "language" => { + quote! {icu_provider::_internal::locid::fallback::FallbackPriority::Language} + } _ => panic!("Invalid value for fallback_by"), } } else { - quote! {icu_provider::FallbackPriority::const_default()} + quote! {icu_provider::_internal::locid::fallback::FallbackPriority::const_default()} }; let extension_key_expr = if let Some(extension_key_lit) = extension_key { - quote! {Some(icu_provider::_internal::extensions_unicode_key!(#extension_key_lit))} + quote! {Some(icu_provider::_internal::locid::extensions::unicode::key!(#extension_key_lit))} } else { quote! {None} }; - let fallback_supplement_expr = - if let Some(fallback_supplement_lit) = fallback_supplement { - match fallback_supplement_lit.value().as_str() { - "collation" => quote! {Some(icu_provider::FallbackSupplement::Collation)}, - _ => panic!("Invalid value for fallback_supplement"), + let fallback_supplement_expr = if let Some(fallback_supplement_lit) = + fallback_supplement + { + match fallback_supplement_lit.value().as_str() { + "collation" => { + quote! {Some(icu_provider::_internal::locid::fallback::FallbackSupplement::Collation)} } - } else { - quote! {None} - }; + _ => panic!("Invalid value for fallback_supplement"), + } + } else { + quote! {None} + }; result.extend(quote!( impl icu_provider::KeyedDataMarker for #marker_name { const KEY: icu_provider::DataKey = icu_provider::data_key!(#key_str, icu_provider::DataKeyMetadata::construct_internal( diff --git a/provider/macros/src/tests.rs b/provider/macros/src/tests.rs index 9095e11533d..09dea953d2d 100644 --- a/provider/macros/src/tests.rs +++ b/provider/macros/src/tests.rs @@ -65,7 +65,7 @@ fn test_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), None, None, false, @@ -104,7 +104,7 @@ fn test_multi_named_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), None, None, false, @@ -119,7 +119,7 @@ fn test_multi_named_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/baz@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), None, None, false, @@ -151,7 +151,7 @@ fn test_databake() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), None, None, false, @@ -197,9 +197,9 @@ fn test_attributes() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::Region, - Some(icu_provider::_internal::extensions_unicode_key!("ca")), - Some(icu_provider::FallbackSupplement::Collation), + icu_provider::_internal::locid::fallback::FallbackPriority::Region, + Some(icu_provider::_internal::locid::extensions::unicode::key!("ca")), + Some(icu_provider::_internal::locid::fallback::FallbackSupplement::Collation), true, )); } From 3076d650cbebc584a6ebbe28824ccff7913e83a5 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 10:43:26 +0200 Subject: [PATCH 02/11] to icu_provider --- Cargo.lock | 1 + components/locid/src/lib.rs | 1 - .../locid_transform/src/fallback/mod.rs | 5 ++++- provider/adapters/src/fallback/mod.rs | 2 +- provider/core/Cargo.toml | 1 + .../locid => provider/core}/src/fallback.rs | 22 +++++++++---------- provider/core/src/key.rs | 2 +- provider/core/src/lib.rs | 6 +++-- provider/macros/src/lib.rs | 10 ++++----- 9 files changed, 27 insertions(+), 23 deletions(-) rename {components/locid => provider/core}/src/fallback.rs (92%) diff --git a/Cargo.lock b/Cargo.lock index 7295509e8a2..2e2d1e03db0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1777,6 +1777,7 @@ dependencies = [ "displaydoc", "erased-serde", "icu_locid", + "icu_locid_transform", "icu_provider_adapters", "icu_provider_macros", "log", diff --git a/components/locid/src/lib.rs b/components/locid/src/lib.rs index 37176edc03d..d75fd2ea93a 100644 --- a/components/locid/src/lib.rs +++ b/components/locid/src/lib.rs @@ -81,7 +81,6 @@ pub use parser::errors::ParserError; pub use ParserError as Error; pub mod extensions; -pub mod fallback; #[macro_use] pub mod subtags; pub mod zerovec; diff --git a/components/locid_transform/src/fallback/mod.rs b/components/locid_transform/src/fallback/mod.rs index 6b2a438cb4d..d829c834fc3 100644 --- a/components/locid_transform/src/fallback/mod.rs +++ b/components/locid_transform/src/fallback/mod.rs @@ -41,10 +41,13 @@ use crate::provider::*; use icu_locid::extensions::unicode::Value; -use icu_locid::fallback::{FallbackSupplement, LocaleFallbackConfig}; use icu_locid::subtags::Variants; use icu_provider::prelude::*; +#[doc(inline)] +pub use icu_provider::fallback::*; + + mod algorithms; /// Entry type for locale fallbacking. diff --git a/provider/adapters/src/fallback/mod.rs b/provider/adapters/src/fallback/mod.rs index 67fa447d497..f783cfef380 100644 --- a/provider/adapters/src/fallback/mod.rs +++ b/provider/adapters/src/fallback/mod.rs @@ -9,7 +9,7 @@ use icu_locid_transform::provider::*; use icu_provider::prelude::*; #[doc(hidden)] // moved -pub use icu_locid::fallback::LocaleFallbackConfig; +pub use icu_provider::fallback::LocaleFallbackConfig; #[doc(hidden)] // moved pub use icu_locid_transform::fallback::{ LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig, diff --git a/provider/core/Cargo.toml b/provider/core/Cargo.toml index 1f0529cf443..0df7a715870 100644 --- a/provider/core/Cargo.toml +++ b/provider/core/Cargo.toml @@ -56,6 +56,7 @@ databake = { version = "0.1.3", path = "../../utils/databake", optional = true, [dev-dependencies] serde_json = "1.0" icu_provider_adapters = { path = "../../provider/adapters" } +icu_locid_transform = { path = "../../components/locid_transform" } [features] std = ["icu_locid/std"] diff --git a/components/locid/src/fallback.rs b/provider/core/src/fallback.rs similarity index 92% rename from components/locid/src/fallback.rs rename to provider/core/src/fallback.rs index 87a2e60883d..16caaff8c18 100644 --- a/components/locid/src/fallback.rs +++ b/provider/core/src/fallback.rs @@ -5,10 +5,9 @@ //! Options to define fallback behaviour. //! //! These options are consumed by the `LocaleFallbacker` in the `icu_locid_transforms` crate -//! (or the `icu::locid_transforms` module), but are defined here because they are used in -//! the ICU4X data pipeline, which `icu_locid_transform` depends on itself. +//! (or the `icu::locid_transforms` module), but are defined here because they are used by `DataKey`. -use crate::extensions::unicode::Key; +use icu_locid::extensions::unicode::Key; /// Hint for which subtag to prioritize during fallback. /// @@ -64,8 +63,8 @@ pub struct LocaleFallbackConfig { /// /// ``` /// use icu_locid::locale; - /// use icu_locid::fallback::FallbackPriority; - /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::FallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; /// /// // Set up the fallback iterator. @@ -94,8 +93,8 @@ pub struct LocaleFallbackConfig { /// /// ``` /// use icu_locid::locale; - /// use icu_locid::fallback::FallbackPriority; - /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::FallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; /// /// // Set up the fallback iterator. @@ -132,7 +131,7 @@ pub struct LocaleFallbackConfig { /// /// ``` /// use icu_locid::locale; - /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; /// /// // Set up the fallback iterator. @@ -170,11 +169,10 @@ pub struct LocaleFallbackConfig { /// /// ``` /// use icu_locid::locale; - /// use icu_locid::fallback::FallbackPriority; - /// use icu_locid::fallback::FallbackSupplement; - /// use icu_locid::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::FallbackPriority; + /// use icu_locid_transform::fallback::FallbackSupplement; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; - /// use tinystr::tinystr; /// /// // Set up the fallback iterator. /// let fallbacker = diff --git a/provider/core/src/key.rs b/provider/core/src/key.rs index dcdc36bb9bb..5c4f9cc25ed 100644 --- a/provider/core/src/key.rs +++ b/provider/core/src/key.rs @@ -8,7 +8,7 @@ use alloc::borrow::Cow; use core::fmt; use core::fmt::Write; use core::ops::Deref; -use icu_locid::fallback::{FallbackPriority, FallbackSupplement, LocaleFallbackConfig}; +use crate::fallback::{FallbackPriority, FallbackSupplement, LocaleFallbackConfig}; use writeable::{LengthHint, Writeable}; use zerovec::ule::*; diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index 14c8692e118..6ed240b5592 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -135,6 +135,8 @@ extern crate alloc; mod data_provider; mod error; +#[doc(hidden)] +pub mod fallback; mod key; mod request; mod response; @@ -244,9 +246,9 @@ pub mod prelude { // Additional crate re-exports for compatibility #[doc(hidden)] -pub use icu_locid::fallback::FallbackPriority; +pub use fallback::FallbackPriority; #[doc(hidden)] -pub use icu_locid::fallback::FallbackSupplement; +pub use fallback::FallbackSupplement; #[doc(hidden)] pub use yoke; #[doc(hidden)] diff --git a/provider/macros/src/lib.rs b/provider/macros/src/lib.rs index 9569c8fdd6a..60267e51678 100644 --- a/provider/macros/src/lib.rs +++ b/provider/macros/src/lib.rs @@ -353,18 +353,18 @@ fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { let fallback_by_expr = if let Some(fallback_by_lit) = fallback_by { match fallback_by_lit.value().as_str() { "region" => { - quote! {icu_provider::_internal::locid::fallback::FallbackPriority::Region} + quote! {icu_provider::FallbackPriority::Region} } "collation" => { - quote! {icu_provider::_internal::locid::fallback::FallbackPriority::Collation} + quote! {icu_provider::FallbackPriority::Collation} } "language" => { - quote! {icu_provider::_internal::locid::fallback::FallbackPriority::Language} + quote! {icu_provider::FallbackPriority::Language} } _ => panic!("Invalid value for fallback_by"), } } else { - quote! {icu_provider::_internal::locid::fallback::FallbackPriority::const_default()} + quote! {icu_provider::FallbackPriority::const_default()} }; let extension_key_expr = if let Some(extension_key_lit) = extension_key { quote! {Some(icu_provider::_internal::locid::extensions::unicode::key!(#extension_key_lit))} @@ -376,7 +376,7 @@ fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { { match fallback_supplement_lit.value().as_str() { "collation" => { - quote! {Some(icu_provider::_internal::locid::fallback::FallbackSupplement::Collation)} + quote! {Some(icu_provider::FallbackSupplement::Collation)} } _ => panic!("Invalid value for fallback_supplement"), } From 0f6978b639871209b7788f4aa77d9fc4877b6f8f Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 10:57:53 +0200 Subject: [PATCH 03/11] localefallback --- provider/core/src/fallback.rs | 32 ++++++++++++++++---------------- provider/core/src/key.rs | 12 ++++++------ provider/core/src/lib.rs | 4 ++-- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/provider/core/src/fallback.rs b/provider/core/src/fallback.rs index 16caaff8c18..ead1c44e05d 100644 --- a/provider/core/src/fallback.rs +++ b/provider/core/src/fallback.rs @@ -15,7 +15,7 @@ use icu_locid::extensions::unicode::Key; /// on this enum. #[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] #[non_exhaustive] -pub enum FallbackPriority { +pub enum LocaleFallbackPriority { /// Prioritize the language. This is the default behavior. /// /// For example, `"en-US"` should go to `"en"` and then `"und"`. @@ -30,14 +30,14 @@ pub enum FallbackPriority { Collation, } -impl FallbackPriority { +impl LocaleFallbackPriority { /// Const-friendly version of [`Default::default`]. pub const fn const_default() -> Self { Self::Language } } -impl Default for FallbackPriority { +impl Default for LocaleFallbackPriority { fn default() -> Self { Self::const_default() } @@ -46,7 +46,7 @@ impl Default for FallbackPriority { /// What additional data is required to load when performing fallback. #[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] #[non_exhaustive] -pub enum FallbackSupplement { +pub enum LocaleFallbackSupplement { /// Collation supplement Collation, } @@ -63,7 +63,7 @@ pub struct LocaleFallbackConfig { /// /// ``` /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackPriority; /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; /// @@ -71,7 +71,7 @@ pub struct LocaleFallbackConfig { /// let fallbacker = /// LocaleFallbacker::new(); /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Language; + /// config.priority = LocaleFallbackPriority::Language; /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("ca-ES-valencia").into()); /// /// // Run the algorithm and check the results. @@ -93,7 +93,7 @@ pub struct LocaleFallbackConfig { /// /// ``` /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackPriority; /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; /// @@ -101,7 +101,7 @@ pub struct LocaleFallbackConfig { /// let fallbacker = /// LocaleFallbacker::new(); /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Region; + /// config.priority = LocaleFallbackPriority::Region; /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("ca-ES-valencia").into()); /// /// // Run the algorithm and check the results. @@ -124,7 +124,7 @@ pub struct LocaleFallbackConfig { /// fallback_iterator.step(); /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); /// ``` - pub priority: FallbackPriority, + pub priority: LocaleFallbackPriority, /// An extension keyword to retain during locale fallback. /// /// # Examples @@ -162,15 +162,15 @@ pub struct LocaleFallbackConfig { /// For example, most data keys for collation add additional parent locales, such as /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback. /// - /// Currently the only supported fallback supplement is `FallbackSupplement::Collation`, but more may be + /// Currently the only supported fallback supplement is `LocaleFallbackSupplement::Collation`, but more may be /// added in the future. /// /// # Examples /// /// ``` /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::FallbackSupplement; + /// use icu_locid_transform::fallback::LocaleFallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackSupplement; /// use icu_locid_transform::fallback::LocaleFallbackConfig; /// use icu_locid_transform::fallback::LocaleFallbacker; /// @@ -178,8 +178,8 @@ pub struct LocaleFallbackConfig { /// let fallbacker = /// LocaleFallbacker::new(); /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Collation; - /// config.fallback_supplement = Some(FallbackSupplement::Collation); + /// config.priority = LocaleFallbackPriority::Collation; + /// config.fallback_supplement = Some(LocaleFallbackSupplement::Collation); /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("yue-HK").into()); /// /// // Run the algorithm and check the results. @@ -198,14 +198,14 @@ pub struct LocaleFallbackConfig { /// fallback_iterator.step(); /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); /// ``` - pub fallback_supplement: Option, + pub fallback_supplement: Option, } impl LocaleFallbackConfig { /// Const version of [`Default::default`]. pub const fn const_default() -> Self { Self { - priority: FallbackPriority::const_default(), + priority: LocaleFallbackPriority::const_default(), extension_key: None, fallback_supplement: None, } diff --git a/provider/core/src/key.rs b/provider/core/src/key.rs index 5c4f9cc25ed..53aff96d50e 100644 --- a/provider/core/src/key.rs +++ b/provider/core/src/key.rs @@ -8,7 +8,7 @@ use alloc::borrow::Cow; use core::fmt; use core::fmt::Write; use core::ops::Deref; -use crate::fallback::{FallbackPriority, FallbackSupplement, LocaleFallbackConfig}; +use crate::fallback::{LocaleFallbackPriority, LocaleFallbackSupplement, LocaleFallbackConfig}; use writeable::{LengthHint, Writeable}; use zerovec::ule::*; @@ -194,13 +194,13 @@ impl Deref for DataKeyPath { #[non_exhaustive] pub struct DataKeyMetadata { /// What to prioritize when fallbacking on this [`DataKey`]. - pub fallback_priority: FallbackPriority, + pub fallback_priority: LocaleFallbackPriority, /// A Unicode extension keyword to consider when loading data for this [`DataKey`]. pub extension_key: Option, /// Optional choice for additional fallbacking data required for loading this marker. /// /// For more information, see `LocaleFallbackConfig::fallback_supplement`. - pub fallback_supplement: Option, + pub fallback_supplement: Option, /// Whether the key has a singleton value, as opposed to per-locale values. Singleton /// keys behave differently, e.g. they never perform fallback, and can be optimized /// in data providers. @@ -211,7 +211,7 @@ impl DataKeyMetadata { /// Const-friendly version of [`Default::default`]. pub const fn const_default() -> Self { Self { - fallback_priority: FallbackPriority::const_default(), + fallback_priority: LocaleFallbackPriority::const_default(), extension_key: None, fallback_supplement: None, singleton: false, @@ -220,9 +220,9 @@ impl DataKeyMetadata { #[doc(hidden)] pub const fn construct_internal( - fallback_priority: FallbackPriority, + fallback_priority: LocaleFallbackPriority, extension_key: Option, - fallback_supplement: Option, + fallback_supplement: Option, singleton: bool, ) -> Self { Self { diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index 6ed240b5592..86256eea33a 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -246,9 +246,9 @@ pub mod prelude { // Additional crate re-exports for compatibility #[doc(hidden)] -pub use fallback::FallbackPriority; +pub use fallback::LocaleFallbackPriority as FallbackPriority; #[doc(hidden)] -pub use fallback::FallbackSupplement; +pub use fallback::LocaleFallbackSupplement as FallbackSupplement; #[doc(hidden)] pub use yoke; #[doc(hidden)] From 2610efc5b51aaba455192f5d249835239d11292b Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 12:22:55 +0200 Subject: [PATCH 04/11] more --- .../src/fallback/algorithms.rs | 11 ++++++---- .../locid_transform/src/fallback/mod.rs | 3 +-- ffi/diplomat/src/fallbacker.rs | 18 +++++++++------- ffi/diplomat/tests/missing_apis.txt | 2 +- provider/adapters/src/fallback/mod.rs | 4 ++-- provider/core/src/key.rs | 2 +- provider/core/src/lib.rs | 2 +- provider/macros/src/lib.rs | 21 +++++++++---------- 8 files changed, 33 insertions(+), 30 deletions(-) diff --git a/components/locid_transform/src/fallback/algorithms.rs b/components/locid_transform/src/fallback/algorithms.rs index 046717f2431..86de17861fb 100644 --- a/components/locid_transform/src/fallback/algorithms.rs +++ b/components/locid_transform/src/fallback/algorithms.rs @@ -223,7 +223,7 @@ mod tests { input: &'static str, requires_data: bool, extension_key: Option, - fallback_supplement: Option, + fallback_supplement: Option, // Note: The first entry in the chain is the normalized locale expected_language_chain: &'static [&'static str], expected_region_chain: &'static [&'static str], @@ -400,7 +400,7 @@ mod tests { input: "yue-HK", requires_data: true, extension_key: None, - fallback_supplement: Some(FallbackSupplement::Collation), + fallback_supplement: Some(LocaleFallbackSupplement::Collation), // TODO(#1964): add "zh" as a target. expected_language_chain: &["yue-HK", "yue", "zh-Hant"], expected_region_chain: &["yue-HK", "und-HK"], @@ -414,8 +414,11 @@ mod tests { let fallbacker_with_data = LocaleFallbacker::new(); for cas in TEST_CASES { for (priority, expected_chain) in [ - (FallbackPriority::Language, cas.expected_language_chain), - (FallbackPriority::Region, cas.expected_region_chain), + ( + LocaleFallbackPriority::Language, + cas.expected_language_chain, + ), + (LocaleFallbackPriority::Region, cas.expected_region_chain), ] { let mut config = LocaleFallbackConfig::default(); config.priority = priority; diff --git a/components/locid_transform/src/fallback/mod.rs b/components/locid_transform/src/fallback/mod.rs index d829c834fc3..8dd40244c09 100644 --- a/components/locid_transform/src/fallback/mod.rs +++ b/components/locid_transform/src/fallback/mod.rs @@ -47,7 +47,6 @@ use icu_provider::prelude::*; #[doc(inline)] pub use icu_provider::fallback::*; - mod algorithms; /// Entry type for locale fallbacking. @@ -199,7 +198,7 @@ impl<'a> LocaleFallbackerBorrowed<'a> { likely_subtags: self.likely_subtags, parents: self.parents, supplement: match config.fallback_supplement { - Some(FallbackSupplement::Collation) => self.collation_supplement, + Some(LocaleFallbackSupplement::Collation) => self.collation_supplement, _ => None, }, config, diff --git a/ffi/diplomat/src/fallbacker.rs b/ffi/diplomat/src/fallbacker.rs index d1961e5f74d..92d45460d5d 100644 --- a/ffi/diplomat/src/fallbacker.rs +++ b/ffi/diplomat/src/fallbacker.rs @@ -5,9 +5,9 @@ #[diplomat::bridge] pub mod ffi { use alloc::boxed::Box; - use icu_locid::fallback::FallbackPriority; - use icu_locid::fallback::LocaleFallbackConfig; + use icu_locid_transform::fallback::LocaleFallbackConfig; use icu_locid_transform::fallback::LocaleFallbackIterator; + use icu_locid_transform::fallback::LocaleFallbackPriority; use icu_locid_transform::fallback::LocaleFallbacker; use icu_locid_transform::fallback::LocaleFallbackerWithConfig; @@ -26,10 +26,10 @@ pub mod ffi { pub struct ICU4XLocaleFallbacker(pub LocaleFallbacker); /// Priority mode for the ICU4X fallback algorithm. - #[diplomat::enum_convert(FallbackPriority, needs_wildcard)] - #[diplomat::rust_link(icu::locid::fallback::FallbackPriority, Enum)] + #[diplomat::enum_convert(LocaleFallbackPriority, needs_wildcard)] + #[diplomat::rust_link(icu::locid_transform::fallback::LocaleFallbackPriority, Enum)] #[diplomat::rust_link( - icu::locid::fallback::FallbackPriority::const_default, + icu::locid_transform::fallback::LocaleFallbackPriority::const_default, FnInEnum, hidden )] @@ -40,9 +40,9 @@ pub mod ffi { } /// Collection of configurations for the ICU4X fallback algorithm. - #[diplomat::rust_link(icu::locid::fallback::LocaleFallbackConfig, Struct)] + #[diplomat::rust_link(icu::locid_transform::fallback::LocaleFallbackConfig, Struct)] #[diplomat::rust_link( - icu::locid::fallback::LocaleFallbackConfig::const_default, + icu::locid_transform::fallback::LocaleFallbackConfig::const_default, FnInStruct, hidden )] @@ -159,7 +159,9 @@ pub mod ffi { } } -impl TryFrom> for icu_locid::fallback::LocaleFallbackConfig { +impl TryFrom> + for icu_locid_transform::fallback::LocaleFallbackConfig +{ type Error = crate::errors::ffi::ICU4XError; fn try_from(other: ffi::ICU4XLocaleFallbackConfig) -> Result { let mut result = Self::default(); diff --git a/ffi/diplomat/tests/missing_apis.txt b/ffi/diplomat/tests/missing_apis.txt index 3fab716eb9e..8d39dc2f567 100644 --- a/ffi/diplomat/tests/missing_apis.txt +++ b/ffi/diplomat/tests/missing_apis.txt @@ -38,7 +38,6 @@ icu::calendar::persian::Persian::new#FnInStruct icu::calendar::persian::PersianDateInner#Struct icu::calendar::roc::Roc#Struct icu::calendar::roc::RocDateInner#Struct -icu::locid::fallback::FallbackSupplement#Enum icu::locid_transform::Direction#Enum icu::locid_transform::LocaleDirectionality#Struct icu::locid_transform::LocaleDirectionality::get#FnInStruct @@ -46,6 +45,7 @@ icu::locid_transform::LocaleDirectionality::is_left_to_right#FnInStruct icu::locid_transform::LocaleDirectionality::is_right_to_left#FnInStruct icu::locid_transform::LocaleDirectionality::new#FnInStruct icu::locid_transform::LocaleDirectionality::new_with_expander#FnInStruct +icu::locid_transform::fallback::LocaleFallbackSupplement#Enum icu::properties::bidi_data::BidiAuxiliaryProperties#Struct icu::properties::bidi_data::BidiAuxiliaryProperties::from_data#FnInStruct icu::properties::bidi_data::BidiAuxiliaryPropertiesBorrowed#Struct diff --git a/provider/adapters/src/fallback/mod.rs b/provider/adapters/src/fallback/mod.rs index f783cfef380..b1f62e65703 100644 --- a/provider/adapters/src/fallback/mod.rs +++ b/provider/adapters/src/fallback/mod.rs @@ -8,12 +8,12 @@ use crate::helpers::result_is_err_missing_locale; use icu_locid_transform::provider::*; use icu_provider::prelude::*; -#[doc(hidden)] // moved -pub use icu_provider::fallback::LocaleFallbackConfig; #[doc(hidden)] // moved pub use icu_locid_transform::fallback::{ LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig, }; +#[doc(hidden)] // moved +pub use icu_provider::fallback::LocaleFallbackConfig; /// A data provider wrapper that performs locale fallback. This enables arbitrary locales to be /// handled at runtime. diff --git a/provider/core/src/key.rs b/provider/core/src/key.rs index 53aff96d50e..0e1e1006e18 100644 --- a/provider/core/src/key.rs +++ b/provider/core/src/key.rs @@ -4,11 +4,11 @@ use crate::error::{DataError, DataErrorKind}; +use crate::fallback::{LocaleFallbackConfig, LocaleFallbackPriority, LocaleFallbackSupplement}; use alloc::borrow::Cow; use core::fmt; use core::fmt::Write; use core::ops::Deref; -use crate::fallback::{LocaleFallbackPriority, LocaleFallbackSupplement, LocaleFallbackConfig}; use writeable::{LengthHint, Writeable}; use zerovec::ule::*; diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index 86256eea33a..ab983b264b4 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -135,7 +135,7 @@ extern crate alloc; mod data_provider; mod error; -#[doc(hidden)] +// #[doc(hidden)] pub mod fallback; mod key; mod request; diff --git a/provider/macros/src/lib.rs b/provider/macros/src/lib.rs index 60267e51678..c9b905f9c32 100644 --- a/provider/macros/src/lib.rs +++ b/provider/macros/src/lib.rs @@ -371,18 +371,17 @@ fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { } else { quote! {None} }; - let fallback_supplement_expr = if let Some(fallback_supplement_lit) = - fallback_supplement - { - match fallback_supplement_lit.value().as_str() { - "collation" => { - quote! {Some(icu_provider::FallbackSupplement::Collation)} + let fallback_supplement_expr = + if let Some(fallback_supplement_lit) = fallback_supplement { + match fallback_supplement_lit.value().as_str() { + "collation" => { + quote! {Some(icu_provider::FallbackSupplement::Collation)} + } + _ => panic!("Invalid value for fallback_supplement"), } - _ => panic!("Invalid value for fallback_supplement"), - } - } else { - quote! {None} - }; + } else { + quote! {None} + }; result.extend(quote!( impl icu_provider::KeyedDataMarker for #marker_name { const KEY: icu_provider::DataKey = icu_provider::data_key!(#key_str, icu_provider::DataKeyMetadata::construct_internal( From 07ea6e8e3c711c0589f25aba603084e4d9c19b36 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 14:04:37 +0200 Subject: [PATCH 05/11] hidden --- provider/core/src/lib.rs | 2 +- tools/ffi_coverage/src/main.rs | 36 +++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index ab983b264b4..86256eea33a 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -135,7 +135,7 @@ extern crate alloc; mod data_provider; mod error; -// #[doc(hidden)] +#[doc(hidden)] pub mod fallback; mod key; mod request; diff --git a/tools/ffi_coverage/src/main.rs b/tools/ffi_coverage/src/main.rs index 827516dd810..9243a944cc3 100644 --- a/tools/ffi_coverage/src/main.rs +++ b/tools/ffi_coverage/src/main.rs @@ -184,6 +184,39 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: if let Some(item) = &krate.index.get(import.id.as_ref().unwrap()) { recurse(item, krate, types, path, true, None); } else if let Some(item) = &krate.paths.get(import.id.as_ref().unwrap()) { + // This is a reexport of a hidden module, which works fine in HTML doc but + // doesn't seem to be reachable anywhere in JSON. + if matches!(import.source.as_str(), "icu_provider::fallback") { + insert_ty( + types, + vec![ + "icu".to_string(), "locid_transform".to_string(), + "fallback".to_string(), + "LocaleFallbackConfig".to_string(), + ], + ast::DocType::Struct, + ); + insert_ty( + types, + vec![ + "icu".to_string(), "locid_transform".to_string(), + "fallback".to_string(), + "LocaleFallbackPriority".to_string(), + ], + ast::DocType::Enum, + ); + insert_ty( + types, + vec![ + "icu".to_string(), "locid_transform".to_string(), + "fallback".to_string(), + "LocaleFallbackSupplement".to_string(), + ], + ast::DocType::Enum, + ); + return; + } + // External crate. This is quite complicated and while it works, I'm not sure // it's correct. This basically handles the case `pub use other_crate::module::Struct`, // which means we have to parse `other_crate`, then look for `module`, then look @@ -209,7 +242,7 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: } _ => item.name.as_deref() == Some(segment), }) - .unwrap(); + .expect(&import.source); } _ => unreachable!(), } @@ -357,6 +390,7 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: }; insert_ty(types, path, doc_type); } + ItemEnum::ProcMacro(..) => {} _ => todo!("{:?}", item), } } From 11310ccf07fe196c8afa726ac25875e437ab7c37 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 14:08:55 +0200 Subject: [PATCH 06/11] fmt --- tools/ffi_coverage/src/main.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/ffi_coverage/src/main.rs b/tools/ffi_coverage/src/main.rs index 9243a944cc3..701acffc980 100644 --- a/tools/ffi_coverage/src/main.rs +++ b/tools/ffi_coverage/src/main.rs @@ -190,7 +190,8 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: insert_ty( types, vec![ - "icu".to_string(), "locid_transform".to_string(), + "icu".to_string(), + "locid_transform".to_string(), "fallback".to_string(), "LocaleFallbackConfig".to_string(), ], @@ -199,7 +200,8 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: insert_ty( types, vec![ - "icu".to_string(), "locid_transform".to_string(), + "icu".to_string(), + "locid_transform".to_string(), "fallback".to_string(), "LocaleFallbackPriority".to_string(), ], @@ -208,7 +210,8 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: insert_ty( types, vec![ - "icu".to_string(), "locid_transform".to_string(), + "icu".to_string(), + "locid_transform".to_string(), "fallback".to_string(), "LocaleFallbackSupplement".to_string(), ], From 66391783abab94941735f3648927f5892da3e2b6 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 14:18:24 +0200 Subject: [PATCH 07/11] gen --- ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst | 4 ++-- ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp | 2 +- ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp | 2 +- ffi/diplomat/js/docs/source/fallbacker_ffi.rst | 4 ++-- ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts | 2 +- ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst b/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst index b591aaeeaf3..0133fd6e133 100644 --- a/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst +++ b/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst @@ -5,7 +5,7 @@ Collection of configurations for the ICU4X fallback algorithm. - See the `Rust documentation for LocaleFallbackConfig `__ for more information. + See the `Rust documentation for LocaleFallbackConfig `__ for more information. .. cpp:member:: ICU4XLocaleFallbackPriority priority @@ -43,7 +43,7 @@ Priority mode for the ICU4X fallback algorithm. - See the `Rust documentation for FallbackPriority `__ for more information. + See the `Rust documentation for LocaleFallbackPriority `__ for more information. .. cpp:enumerator:: Language diff --git a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp index b1757e0662b..4325a86669a 100644 --- a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp +++ b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackConfig.hpp @@ -17,7 +17,7 @@ /** * Collection of configurations for the ICU4X fallback algorithm. * - * See the [Rust documentation for `LocaleFallbackConfig`](https://docs.rs/icu/latest/icu/locid/fallback/struct.LocaleFallbackConfig.html) for more information. + * See the [Rust documentation for `LocaleFallbackConfig`](https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackConfig.html) for more information. */ struct ICU4XLocaleFallbackConfig { public: diff --git a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp index 3ceb4184243..19d52ae7a34 100644 --- a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp +++ b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp @@ -16,7 +16,7 @@ /** * Priority mode for the ICU4X fallback algorithm. * - * See the [Rust documentation for `FallbackPriority`](https://docs.rs/icu/latest/icu/locid/fallback/enum.FallbackPriority.html) for more information. + * See the [Rust documentation for `LocaleFallbackPriority`](https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.LocaleFallbackPriority.html) for more information. */ enum struct ICU4XLocaleFallbackPriority { Language = 0, diff --git a/ffi/diplomat/js/docs/source/fallbacker_ffi.rst b/ffi/diplomat/js/docs/source/fallbacker_ffi.rst index 091f7bedc92..e8b26a436cc 100644 --- a/ffi/diplomat/js/docs/source/fallbacker_ffi.rst +++ b/ffi/diplomat/js/docs/source/fallbacker_ffi.rst @@ -5,7 +5,7 @@ Collection of configurations for the ICU4X fallback algorithm. - See the `Rust documentation for LocaleFallbackConfig `__ for more information. + See the `Rust documentation for LocaleFallbackConfig `__ for more information. .. js:attribute:: priority @@ -43,7 +43,7 @@ Priority mode for the ICU4X fallback algorithm. - See the `Rust documentation for FallbackPriority `__ for more information. + See the `Rust documentation for LocaleFallbackPriority `__ for more information. .. js:class:: ICU4XLocaleFallbacker diff --git a/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts b/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts index 12d01b4b003..30bc9d99f76 100644 --- a/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts +++ b/ffi/diplomat/js/include/ICU4XLocaleFallbackConfig.d.ts @@ -4,7 +4,7 @@ import { ICU4XLocaleFallbackPriority } from "./ICU4XLocaleFallbackPriority"; * Collection of configurations for the ICU4X fallback algorithm. - * See the {@link https://docs.rs/icu/latest/icu/locid/fallback/struct.LocaleFallbackConfig.html Rust documentation for `LocaleFallbackConfig`} for more information. + * See the {@link https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackConfig.html Rust documentation for `LocaleFallbackConfig`} for more information. */ export class ICU4XLocaleFallbackConfig { priority: ICU4XLocaleFallbackPriority; diff --git a/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts b/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts index 4ec0f7e79db..5ebc55f192c 100644 --- a/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts +++ b/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts @@ -3,7 +3,7 @@ * Priority mode for the ICU4X fallback algorithm. - * See the {@link https://docs.rs/icu/latest/icu/locid/fallback/enum.FallbackPriority.html Rust documentation for `FallbackPriority`} for more information. + * See the {@link https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.LocaleFallbackPriority.html Rust documentation for `LocaleFallbackPriority`} for more information. */ export enum ICU4XLocaleFallbackPriority { /** From 037b91f95a00c4ff3f798bff8e22932f16df5efb Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 20 Jul 2023 15:16:52 +0200 Subject: [PATCH 08/11] fix --- provider/core/src/lib.rs | 1 + provider/macros/src/lib.rs | 43 +++++++++++++++++++++--------------- provider/macros/src/tests.rs | 12 +++++----- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index 86256eea33a..652f84a6598 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -257,5 +257,6 @@ pub use zerofrom; // For macros #[doc(hidden)] pub mod _internal { + pub use super::fallback::{LocaleFallbackPriority, LocaleFallbackSupplement}; pub use icu_locid as locid; } diff --git a/provider/macros/src/lib.rs b/provider/macros/src/lib.rs index c9b905f9c32..114784ff777 100644 --- a/provider/macros/src/lib.rs +++ b/provider/macros/src/lib.rs @@ -55,9 +55,15 @@ mod tests; /// # // because that will rebuild the whole tree in proc macro mode /// # // when using cargo test --all-features --all-targets. /// # pub mod icu { +/// # pub mod locid_transform { +/// # pub mod fallback { +/// # pub use icu_provider::_internal::{LocaleFallbackPriority, LocaleFallbackSupplement}; +/// # } +/// # } /// # pub use icu_provider::_internal::locid; /// # } -/// use icu::locid::fallback::*; +/// use icu::locid_transform::fallback::*; +/// use icu::locid::extensions::unicode::key; /// use icu_provider::prelude::*; /// use std::borrow::Cow; /// @@ -81,18 +87,18 @@ mod tests; /// assert_eq!(&*BarV1Marker::KEY.path(), "demo/bar@1"); /// assert_eq!( /// BarV1Marker::KEY.metadata().fallback_priority, -/// FallbackPriority::Language +/// LocaleFallbackPriority::Language /// ); /// assert_eq!(BarV1Marker::KEY.metadata().extension_key, None); /// /// assert_eq!(&*BazV1Marker::KEY.path(), "demo/baz@1"); /// assert_eq!( /// BazV1Marker::KEY.metadata().fallback_priority, -/// FallbackPriority::Region +/// LocaleFallbackPriority::Region /// ); /// assert_eq!( /// BazV1Marker::KEY.metadata().extension_key, -/// Some(icu::locid::extensions::unicode::key!("ca")) +/// Some(key!("ca")) /// ); /// ``` /// @@ -353,35 +359,36 @@ fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { let fallback_by_expr = if let Some(fallback_by_lit) = fallback_by { match fallback_by_lit.value().as_str() { "region" => { - quote! {icu_provider::FallbackPriority::Region} + quote! {icu_provider::_internal::LocaleFallbackPriority::Region} } "collation" => { - quote! {icu_provider::FallbackPriority::Collation} + quote! {icu_provider::_internal::LocaleFallbackPriority::Collation} } "language" => { - quote! {icu_provider::FallbackPriority::Language} + quote! {icu_provider::_internal::LocaleFallbackPriority::Language} } _ => panic!("Invalid value for fallback_by"), } } else { - quote! {icu_provider::FallbackPriority::const_default()} + quote! {icu_provider::_internal::LocaleFallbackPriority::const_default()} }; let extension_key_expr = if let Some(extension_key_lit) = extension_key { quote! {Some(icu_provider::_internal::locid::extensions::unicode::key!(#extension_key_lit))} } else { quote! {None} }; - let fallback_supplement_expr = - if let Some(fallback_supplement_lit) = fallback_supplement { - match fallback_supplement_lit.value().as_str() { - "collation" => { - quote! {Some(icu_provider::FallbackSupplement::Collation)} - } - _ => panic!("Invalid value for fallback_supplement"), + let fallback_supplement_expr = if let Some(fallback_supplement_lit) = + fallback_supplement + { + match fallback_supplement_lit.value().as_str() { + "collation" => { + quote! {Some(icu_provider::_internal::LocaleFallbackSupplement::Collation)} } - } else { - quote! {None} - }; + _ => panic!("Invalid value for fallback_supplement"), + } + } else { + quote! {None} + }; result.extend(quote!( impl icu_provider::KeyedDataMarker for #marker_name { const KEY: icu_provider::DataKey = icu_provider::data_key!(#key_str, icu_provider::DataKeyMetadata::construct_internal( diff --git a/provider/macros/src/tests.rs b/provider/macros/src/tests.rs index 09dea953d2d..908cf6e334f 100644 --- a/provider/macros/src/tests.rs +++ b/provider/macros/src/tests.rs @@ -65,7 +65,7 @@ fn test_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -104,7 +104,7 @@ fn test_multi_named_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -119,7 +119,7 @@ fn test_multi_named_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/baz@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -151,7 +151,7 @@ fn test_databake() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::_internal::locid::fallback::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -197,9 +197,9 @@ fn test_attributes() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::_internal::locid::fallback::FallbackPriority::Region, + icu_provider::_internal::LocaleFallbackPriority::Region, Some(icu_provider::_internal::locid::extensions::unicode::key!("ca")), - Some(icu_provider::_internal::locid::fallback::FallbackSupplement::Collation), + Some(icu_provider::_internal::LocaleFallbackSupplement::Collation), true, )); } From 296e5f0f9687adeebe010a856ea0e0e540279655 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Fri, 21 Jul 2023 11:57:40 +0200 Subject: [PATCH 09/11] dep --- components/locid/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/components/locid/Cargo.toml b/components/locid/Cargo.toml index b93b3e545d1..309eb276e9a 100644 --- a/components/locid/Cargo.toml +++ b/components/locid/Cargo.toml @@ -47,7 +47,6 @@ litemap = { path = "../../utils/litemap", features = ["testing"]} postcard = { version = "1.0.0", default-features = false, features = ["use-std"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -icu_locid_transform = { path = "../locid_transform", version = "1.2" } [features] std = [] From 9291f6880b4967cdba5bcb954b8cfc62933b64c1 Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Fri, 21 Jul 2023 12:41:06 +0200 Subject: [PATCH 10/11] lock --- Cargo.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 2e2d1e03db0..38b9292220c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1656,7 +1656,6 @@ dependencies = [ "iai", "icu", "icu_benchmark_macros", - "icu_locid_transform", "litemap", "postcard", "serde", From dc6962752688ae8a1abbf31286fc4557f9a8e9fb Mon Sep 17 00:00:00 2001 From: Robert Bastian Date: Thu, 10 Aug 2023 20:34:56 +0200 Subject: [PATCH 11/11] bake --- .../data/data/macros/datetime_chinese_datelengths_v1.data.rs | 2 +- .../data/data/macros/datetime_chinese_datesymbols_v1.data.rs | 2 +- .../data/data/macros/datetime_hebrew_datelengths_v1.data.rs | 2 +- .../data/data/macros/datetime_hebrew_datesymbols_v1.data.rs | 2 +- .../data/macros/datetime_islamiccivil_datelengths_v1.data.rs | 2 +- .../data/macros/datetime_islamiccivil_datesymbols_v1.data.rs | 2 +- .../macros/datetime_islamicobservational_datelengths_v1.data.rs | 2 +- .../macros/datetime_islamicobservational_datesymbols_v1.data.rs | 2 +- .../data/macros/datetime_islamictabular_datelengths_v1.data.rs | 2 +- .../data/macros/datetime_islamictabular_datesymbols_v1.data.rs | 2 +- .../data/data/macros/datetime_persian_datelengths_v1.data.rs | 2 +- .../data/data/macros/datetime_persian_datesymbols_v1.data.rs | 2 +- .../data/data/macros/datetime_roc_datelengths_v1.data.rs | 2 +- .../data/data/macros/datetime_roc_datesymbols_v1.data.rs | 2 +- .../data/data/macros/datetime_ummalqura_datelengths_v1.data.rs | 2 +- .../data/data/macros/datetime_ummalqura_datesymbols_v1.data.rs | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs index f36f8e70b8d..e81121cff1a 100644 --- a/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs @@ -56,7 +56,7 @@ macro_rules! __impl_datetime_chinese_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs index e1613a2bc87..3aa5767f841 100644 --- a/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs @@ -5326,7 +5326,7 @@ macro_rules! __impl_datetime_chinese_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs index e63c32e9a95..6dc64cddc29 100644 --- a/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs @@ -131,7 +131,7 @@ macro_rules! __impl_datetime_hebrew_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs index bcbb407b186..790253bc816 100644 --- a/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs @@ -5246,7 +5246,7 @@ macro_rules! __impl_datetime_hebrew_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamiccivil_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_islamiccivil_datelengths_v1.data.rs index 59b70788327..a49be6e6bf1 100644 --- a/components/datetime/data/data/macros/datetime_islamiccivil_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamiccivil_datelengths_v1.data.rs @@ -146,7 +146,7 @@ macro_rules! __impl_datetime_islamiccivil_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamiccivil_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_islamiccivil_datesymbols_v1.data.rs index 5104ea3e594..acb2963ef95 100644 --- a/components/datetime/data/data/macros/datetime_islamiccivil_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamiccivil_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_islamiccivil_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamicobservational_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_islamicobservational_datelengths_v1.data.rs index 09228302445..a3a5fca94f0 100644 --- a/components/datetime/data/data/macros/datetime_islamicobservational_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamicobservational_datelengths_v1.data.rs @@ -146,7 +146,7 @@ macro_rules! __impl_datetime_islamicobservational_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamicobservational_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_islamicobservational_datesymbols_v1.data.rs index 84b5acdf395..f98d0607082 100644 --- a/components/datetime/data/data/macros/datetime_islamicobservational_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamicobservational_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_islamicobservational_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamictabular_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_islamictabular_datelengths_v1.data.rs index b151f8b5580..48bb94b260a 100644 --- a/components/datetime/data/data/macros/datetime_islamictabular_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamictabular_datelengths_v1.data.rs @@ -146,7 +146,7 @@ macro_rules! __impl_datetime_islamictabular_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamictabular_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_islamictabular_datesymbols_v1.data.rs index cf0a26f71e5..db61152fc33 100644 --- a/components/datetime/data/data/macros/datetime_islamictabular_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamictabular_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_islamictabular_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs index af355902a0a..6a569261339 100644 --- a/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_persian_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs index 755ee42fd6f..dd8a166df82 100644 --- a/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_persian_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs index 6e57c6aff81..be19520e9e6 100644 --- a/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_roc_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs index 23a86f7c3d0..9c5bba9d61b 100644 --- a/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs @@ -2895,7 +2895,7 @@ macro_rules! __impl_datetime_roc_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_ummalqura_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_ummalqura_datelengths_v1.data.rs index 2f924ca98ea..59a72e0ab74 100644 --- a/components/datetime/data/data/macros/datetime_ummalqura_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_ummalqura_datelengths_v1.data.rs @@ -146,7 +146,7 @@ macro_rules! __impl_datetime_ummalqura_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_ummalqura_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_ummalqura_datesymbols_v1.data.rs index ed38634e526..b39047cac56 100644 --- a/components/datetime/data/data/macros/datetime_ummalqura_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_ummalqura_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_ummalqura_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {