Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Returning correct locale errors in datagen #3578

Merged
merged 2 commits into from
Jun 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions provider/datagen/src/transform/cldr/calendar/japanese.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,16 +118,18 @@ impl crate::DatagenProvider {
}

impl DataProvider<JapaneseErasV1Marker> for crate::DatagenProvider {
fn load(&self, _req: DataRequest) -> Result<DataResponse<JapaneseErasV1Marker>, DataError> {
fn load(&self, req: DataRequest) -> Result<DataResponse<JapaneseErasV1Marker>, DataError> {
self.check_req::<JapaneseErasV1Marker>(req)?;
self.load_japanese_eras(false)
}
}

impl DataProvider<JapaneseExtendedErasV1Marker> for crate::DatagenProvider {
fn load(
&self,
_req: DataRequest,
req: DataRequest,
) -> Result<DataResponse<JapaneseExtendedErasV1Marker>, DataError> {
self.check_req::<JapaneseExtendedErasV1Marker>(req)?;
let DataResponse { metadata, payload } = self.load_japanese_eras(true)?;
Ok(DataResponse {
metadata,
Expand Down
1 change: 1 addition & 0 deletions provider/datagen/src/transform/cldr/characters/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ macro_rules! exemplar_chars_impls {
($data_marker_name:ident, $cldr_serde_field_name:ident) => {
impl DataProvider<$data_marker_name> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<$data_marker_name>, DataError> {
self.check_req::<$data_marker_name>(req)?;
let langid = req.locale.get_langid();

let data: &cldr_serde::exemplar_chars::Resource = self
Expand Down
1 change: 1 addition & 0 deletions provider/datagen/src/transform/cldr/datetime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ macro_rules! impl_data_provider {
($marker:ident, $expr:expr, calendared = $calendared:expr) => {
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
if $calendared == "locale" && req.locale.is_empty() {
return Err(DataErrorKind::NeedsLocale.into_error());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ impl IterableDataProvider<WeekDataV1Marker> for crate::DatagenProvider {

impl DataProvider<WeekDataV1Marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<WeekDataV1Marker>, DataError> {
self.check_req::<WeekDataV1Marker>(req)?;
let territory = req
.locale
.region()
Expand Down
2 changes: 2 additions & 0 deletions provider/datagen/src/transform/cldr/decimal/compact.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ impl DataProvider<ShortCompactDecimalFormatDataV1Marker> for crate::DatagenProvi
&self,
req: DataRequest,
) -> Result<DataResponse<ShortCompactDecimalFormatDataV1Marker>, DataError> {
self.check_req::<ShortCompactDecimalFormatDataV1Marker>(req)?;
let langid = req.locale.get_langid();

let resource: &cldr_serde::numbers::Resource = self
Expand Down Expand Up @@ -67,6 +68,7 @@ impl DataProvider<LongCompactDecimalFormatDataV1Marker> for crate::DatagenProvid
&self,
req: DataRequest,
) -> Result<DataResponse<LongCompactDecimalFormatDataV1Marker>, DataError> {
self.check_req::<LongCompactDecimalFormatDataV1Marker>(req)?;
let langid = req.locale.get_langid();

let resource: &cldr_serde::numbers::Resource = self
Expand Down
1 change: 1 addition & 0 deletions provider/datagen/src/transform/cldr/decimal/symbols.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ use tinystr::TinyAsciiStr;

impl DataProvider<DecimalSymbolsV1Marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<DecimalSymbolsV1Marker>, DataError> {
self.check_req::<DecimalSymbolsV1Marker>(req)?;
let langid = req.locale.get_langid();

let resource: &cldr_serde::numbers::Resource = self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ impl DataProvider<LanguageDisplayNamesV1Marker> for crate::DatagenProvider {
&self,
req: DataRequest,
) -> Result<DataResponse<LanguageDisplayNamesV1Marker>, DataError> {
self.check_req::<LanguageDisplayNamesV1Marker>(req)?;
let langid = req.locale.get_langid();

let data: &cldr_serde::displaynames::language::Resource = self
Expand All @@ -39,6 +40,7 @@ impl DataProvider<LocaleDisplayNamesV1Marker> for crate::DatagenProvider {
&self,
req: DataRequest,
) -> Result<DataResponse<LocaleDisplayNamesV1Marker>, DataError> {
self.check_req::<LocaleDisplayNamesV1Marker>(req)?;
let langid = req.locale.get_langid();

let data: &cldr_serde::displaynames::language::Resource = self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ impl DataProvider<RegionDisplayNamesV1Marker> for crate::DatagenProvider {
&self,
req: DataRequest,
) -> Result<DataResponse<RegionDisplayNamesV1Marker>, DataError> {
self.check_req::<RegionDisplayNamesV1Marker>(req)?;
let langid = req.locale.get_langid();

let data: &cldr_serde::displaynames::region::Resource = self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ impl DataProvider<ScriptDisplayNamesV1Marker> for crate::DatagenProvider {
&self,
req: DataRequest,
) -> Result<DataResponse<ScriptDisplayNamesV1Marker>, DataError> {
self.check_req::<ScriptDisplayNamesV1Marker>(req)?;
let langid = req.locale.get_langid();

let data: &cldr_serde::displaynames::script::Resource = self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ impl DataProvider<VariantDisplayNamesV1Marker> for crate::DatagenProvider {
&self,
req: DataRequest,
) -> Result<DataResponse<VariantDisplayNamesV1Marker>, DataError> {
self.check_req::<VariantDisplayNamesV1Marker>(req)?;
let langid = req.locale.get_langid();

let data: &cldr_serde::displaynames::variant::Resource = self
Expand Down
9 changes: 6 additions & 3 deletions provider/datagen/src/transform/cldr/fallback/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ use zerovec::{maps::ZeroMap2d, ule::UnvalidatedStr};
impl DataProvider<LocaleFallbackLikelySubtagsV1Marker> for crate::DatagenProvider {
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<LocaleFallbackLikelySubtagsV1Marker>, DataError> {
self.check_req::<LocaleFallbackLikelySubtagsV1Marker>(req)?;
let resources = LikelySubtagsResources::try_from_source_data(&self.source)?;

let metadata = DataResponseMetadata::default();
Expand All @@ -36,8 +37,9 @@ impl DataProvider<LocaleFallbackLikelySubtagsV1Marker> for crate::DatagenProvide
impl DataProvider<LocaleFallbackParentsV1Marker> for crate::DatagenProvider {
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<LocaleFallbackParentsV1Marker>, DataError> {
self.check_req::<LocaleFallbackParentsV1Marker>(req)?;
let parents_data: &cldr_serde::parent_locales::Resource = self
.source
.cldr()?
Expand All @@ -55,8 +57,9 @@ impl DataProvider<LocaleFallbackParentsV1Marker> for crate::DatagenProvider {
impl DataProvider<CollationFallbackSupplementV1Marker> for crate::DatagenProvider {
fn load(
&self,
_req: DataRequest,
req: DataRequest,
) -> Result<DataResponse<CollationFallbackSupplementV1Marker>, DataError> {
self.check_req::<CollationFallbackSupplementV1Marker>(req)?;
// TODO(#1964): Load this data from its proper sources. For now, it is copied from:
// https://github.com/unicode-org/icu/blob/main/tools/cldr/cldr-to-icu/build-icu-data.xml
// as well as from CLDR XML.
Expand Down
1 change: 1 addition & 0 deletions provider/datagen/src/transform/cldr/list/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ macro_rules! implement {
($marker:ident) => {
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
load(self, req)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ use tinystr::TinyAsciiStr;
use zerovec::ZeroSlice;

impl DataProvider<AliasesV1Marker> for crate::DatagenProvider {
fn load(&self, _: DataRequest) -> Result<DataResponse<AliasesV1Marker>, DataError> {
fn load(&self, req: DataRequest) -> Result<DataResponse<AliasesV1Marker>, DataError> {
self.check_req::<AliasesV1Marker>(req)?;
let data: &cldr_serde::aliases::Resource = self
.source
.cldr()?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ use icu_provider::datagen::IterableDataProvider;
use icu_provider::prelude::*;

impl DataProvider<ScriptDirectionV1Marker> for crate::DatagenProvider {
fn load(&self, _: DataRequest) -> Result<DataResponse<ScriptDirectionV1Marker>, DataError> {
fn load(&self, req: DataRequest) -> Result<DataResponse<ScriptDirectionV1Marker>, DataError> {
self.check_req::<ScriptDirectionV1Marker>(req)?;
let data: &cldr_serde::directionality::Resource = self
.source
.cldr()?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ use icu_provider::prelude::*;
use std::collections::{BTreeMap, HashSet};

impl DataProvider<LikelySubtagsV1Marker> for crate::DatagenProvider {
fn load(&self, _: DataRequest) -> Result<DataResponse<LikelySubtagsV1Marker>, DataError> {
fn load(&self, req: DataRequest) -> Result<DataResponse<LikelySubtagsV1Marker>, DataError> {
self.check_req::<LikelySubtagsV1Marker>(req)?;
let resources = LikelySubtagsResources::try_from_source_data(&self.source)?;

Ok(DataResponse {
Expand All @@ -31,8 +32,9 @@ impl IterableDataProvider<LikelySubtagsV1Marker> for crate::DatagenProvider {
impl DataProvider<LikelySubtagsExtendedV1Marker> for crate::DatagenProvider {
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<LikelySubtagsExtendedV1Marker>, DataError> {
self.check_req::<LikelySubtagsExtendedV1Marker>(req)?;
let resources = LikelySubtagsResources::try_from_source_data(&self.source)?;

Ok(DataResponse {
Expand All @@ -55,6 +57,7 @@ impl DataProvider<LikelySubtagsForLanguageV1Marker> for crate::DatagenProvider {
&self,
req: DataRequest,
) -> Result<DataResponse<LikelySubtagsForLanguageV1Marker>, DataError> {
self.check_req::<LikelySubtagsForLanguageV1Marker>(req)?;
let response = DataProvider::<LikelySubtagsV1Marker>::load(self, req)?;
Ok(DataResponse {
metadata: response.metadata,
Expand All @@ -74,6 +77,7 @@ impl DataProvider<LikelySubtagsForScriptRegionV1Marker> for crate::DatagenProvid
&self,
req: DataRequest,
) -> Result<DataResponse<LikelySubtagsForScriptRegionV1Marker>, DataError> {
self.check_req::<LikelySubtagsForScriptRegionV1Marker>(req)?;
let response = DataProvider::<LikelySubtagsV1Marker>::load(self, req)?;
Ok(DataResponse {
metadata: response.metadata,
Expand Down
1 change: 1 addition & 0 deletions provider/datagen/src/transform/cldr/plurals/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ macro_rules! implement {
($marker:ident) => {
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
Ok(DataResponse {
metadata: Default::default(),
payload: Some(DataPayload::from_owned(PluralRulesV1::from(
Expand Down
1 change: 1 addition & 0 deletions provider/datagen/src/transform/cldr/relativetime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ macro_rules! make_data_provider {
&self,
req: DataRequest,
) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
let langid = req.locale.get_langid();
let resource: &cldr_serde::date_fields::Resource = self
.source
Expand Down
6 changes: 2 additions & 4 deletions provider/datagen/src/transform/cldr/time_zones/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ macro_rules! impl_data_provider {
$(
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
let langid = req.locale.get_langid();

let resource: &cldr_serde::time_zones::time_zone_names::Resource = self
Expand Down Expand Up @@ -256,10 +257,7 @@ mod tests {
);

let metazone_period: DataPayload<MetazonePeriodV1Marker> = provider
.load(DataRequest {
locale: &langid!("en").into(),
metadata: Default::default(),
})
.load(Default::default())
.unwrap()
.take_payload()
.unwrap();
Expand Down
4 changes: 4 additions & 0 deletions provider/datagen/src/transform/icuexport/collator/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ macro_rules! collation_provider {
$(
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(&self, req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
let $toml_data: &collator_serde::$serde_struct = self
.source
.icuexport()?
Expand Down Expand Up @@ -160,6 +161,9 @@ macro_rules! collation_provider {

impl IterableDataProvider<$marker> for crate::DatagenProvider {
fn supported_locales(&self) -> Result<Vec<DataLocale>, DataError> {
if <$marker>::KEY.metadata().singleton {
return Ok(vec![Default::default()])
}
Ok(self.source.options.locales.filter_by_langid_equality(self
.source
.icuexport()?
Expand Down
4 changes: 3 additions & 1 deletion provider/datagen/src/transform/icuexport/collator/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,9 @@ fn test_nb_nn_no() {

#[test]
fn test_zh() {
let provider = crate::DatagenProvider::for_test();
let mut provider = crate::DatagenProvider::for_test();
// `zh-u-co-gb2312` needs to be manually enabled
provider.source.options.collations.insert("gb2312".into());
let provider = LocaleFallbackProvider::try_new_unstable(provider).unwrap();
let provider = ResolvedLocaleAdapter::new(provider);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ macro_rules! normalization_provider {
use icu_normalizer::provider::$marker;

impl DataProvider<$marker> for crate::DatagenProvider {
fn load(&self, _req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
fn load(&self, req: DataRequest) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
let $toml_data: &normalizer_serde::$serde_struct =
self.source.icuexport()?.read_and_parse_toml(&format!(
"norm/{}/{}.toml",
Expand Down
3 changes: 2 additions & 1 deletion provider/datagen/src/transform/icuexport/ucase/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ use std::convert::TryFrom;
mod ucase_serde;

impl DataProvider<CaseMappingV1Marker> for crate::DatagenProvider {
fn load(&self, _req: DataRequest) -> Result<DataResponse<CaseMappingV1Marker>, DataError> {
fn load(&self, req: DataRequest) -> Result<DataResponse<CaseMappingV1Marker>, DataError> {
self.check_req::<CaseMappingV1Marker>(req)?;
let toml = &self
.source
.icuexport()?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ impl DataProvider<BidiAuxiliaryPropertiesV1Marker> for crate::DatagenProvider {
#[cfg(any(feature = "use_wasm", feature = "use_icu4c"))]
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<BidiAuxiliaryPropertiesV1Marker>, DataError> {
use crate::transform::icuexport::uprops::{bin_cp_set, enum_codepointtrie};
use icu_codepointtrie_builder::{CodePointTrieBuilder, CodePointTrieBuilderData};
Expand All @@ -42,6 +42,8 @@ impl DataProvider<BidiAuxiliaryPropertiesV1Marker> for crate::DatagenProvider {
BidiAuxiliaryPropertiesV1, MirroredPairedBracketData,
};

self.check_req::<BidiAuxiliaryPropertiesV1Marker>(req)?;

// Bidi_M / Bidi_Mirrored
let bidi_m_data = bin_cp_set::get_binary_prop_for_code_point_set(&self.source, "Bidi_M")?;
let mut bidi_m_builder = CodePointInversionListBuilder::new();
Expand Down Expand Up @@ -100,8 +102,9 @@ impl DataProvider<BidiAuxiliaryPropertiesV1Marker> for crate::DatagenProvider {
#[cfg(not(any(feature = "use_wasm", feature = "use_icu4c")))]
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<BidiAuxiliaryPropertiesV1Marker>, DataError> {
self.check_req::<BidiAuxiliaryPropertiesV1Marker>(req)?;
return Err(DataError::custom(
"icu_datagen must be built with use_icu4c or use_wasm to build Bidi auxiliary properties data",
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ macro_rules! expand {
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
let data = get_binary_prop_for_code_point_set(&self.source, $prop_name)?;

let mut builder = CodePointInversionListBuilder::new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ macro_rules! expand {
impl DataProvider<$marker> for crate::DatagenProvider {
fn load(
&self,
_: DataRequest,
req: DataRequest,
) -> Result<DataResponse<$marker>, DataError> {
self.check_req::<$marker>(req)?;
let data = get_binary_prop_for_unicodeset(&self.source, $prop_name)?;

let mut builder = CodePointInversionListBuilder::new();
Expand Down
Loading