From fbcbd1463ef96d4cad1ba7512fef79ea17a2eb70 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 10:58:10 -0700 Subject: [PATCH 01/15] thiserror -> displaydoc fastmod "thiserror = .*$" "displaydoc = { version = \"0.2.3\", default-features = false }" --- Cargo.lock | 35 +++++++++++++++++--------- components/datetime/Cargo.toml | 2 +- components/decimal/Cargo.toml | 2 +- components/locid/Cargo.toml | 2 +- components/plurals/Cargo.toml | 2 +- components/uniset/Cargo.toml | 2 +- experimental/provider_ppucd/Cargo.toml | 2 +- provider/cldr/Cargo.toml | 2 +- provider/core/Cargo.toml | 2 +- provider/fs/Cargo.toml | 2 +- provider/testdata/Cargo.toml | 4 +-- utils/fixed_decimal/Cargo.toml | 2 +- utils/pattern/Cargo.toml | 2 +- 13 files changed, 36 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d9c1122d222..970b717d02d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -446,6 +446,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "dlmalloc" version = "0.2.1" @@ -490,6 +501,7 @@ name = "fixed_decimal" version = "0.2.0" dependencies = [ "criterion", + "displaydoc", "getrandom 0.2.2", "icu_benchmark_macros", "rand", @@ -497,7 +509,6 @@ dependencies = [ "rand_pcg", "smallvec", "static_assertions", - "thiserror", "writeable", ] @@ -891,6 +902,7 @@ version = "0.2.0" dependencies = [ "bincode", "criterion", + "displaydoc", "icu", "icu_benchmark_macros", "icu_locid", @@ -901,7 +913,6 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror", "tinystr", "writeable", ] @@ -911,6 +922,7 @@ name = "icu_decimal" version = "0.2.0" dependencies = [ "criterion", + "displaydoc", "fixed_decimal", "getrandom 0.2.2", "icu", @@ -923,7 +935,6 @@ dependencies = [ "rand_distr", "rand_pcg", "serde", - "thiserror", "writeable", ] @@ -946,11 +957,11 @@ name = "icu_locid" version = "0.2.0" dependencies = [ "criterion", + "displaydoc", "icu", "icu_benchmark_macros", "serde", "serde_json", - "thiserror", "tinystr", "writeable", ] @@ -969,8 +980,8 @@ dependencies = [ name = "icu_pattern" version = "0.1.0" dependencies = [ + "displaydoc", "iai", - "thiserror", "writeable", ] @@ -979,6 +990,7 @@ name = "icu_plurals" version = "0.2.0" dependencies = [ "criterion", + "displaydoc", "fixed_decimal", "icu", "icu_benchmark_macros", @@ -988,13 +1000,13 @@ dependencies = [ "icu_testdata", "serde", "serde_json", - "thiserror", ] [[package]] name = "icu_provider" version = "0.2.0" dependencies = [ + "displaydoc", "erased-serde", "icu_locid", "icu_locid_macros", @@ -1003,7 +1015,6 @@ dependencies = [ "serde", "serde_json", "static_assertions", - "thiserror", "tinystr", "writeable", "yoke", @@ -1030,6 +1041,7 @@ name = "icu_provider_cldr" version = "0.2.0" dependencies = [ "dirs", + "displaydoc", "icu_datetime", "icu_decimal", "icu_locale_canonicalizer", @@ -1050,7 +1062,6 @@ dependencies = [ "serde_json", "smallstr", "smallvec", - "thiserror", "tinystr", "unzip", "urlencoding", @@ -1062,6 +1073,7 @@ version = "0.2.0" dependencies = [ "bincode", "criterion", + "displaydoc", "erased-serde", "icu_benchmark_macros", "icu_locid", @@ -1072,7 +1084,6 @@ dependencies = [ "serde", "serde_json", "static_assertions", - "thiserror", ] [[package]] @@ -1088,11 +1099,11 @@ dependencies = [ name = "icu_provider_ppucd" version = "0.1.0" dependencies = [ + "displaydoc", "icu_locid", "icu_locid_macros", "icu_provider", "icu_uniset", - "thiserror", "tinystr", ] @@ -1123,6 +1134,7 @@ name = "icu_testdata" version = "0.2.0" dependencies = [ "cargo_metadata", + "displaydoc", "icu_locid", "icu_locid_macros", "icu_plurals", @@ -1131,7 +1143,6 @@ dependencies = [ "icu_provider_fs", "serde", "serde_json", - "thiserror", "writeable", ] @@ -1140,13 +1151,13 @@ name = "icu_uniset" version = "0.2.0" dependencies = [ "criterion", + "displaydoc", "icu", "icu_benchmark_macros", "icu_provider", "litemap", "serde", "serde_json", - "thiserror", "tinystr", ] diff --git a/components/datetime/Cargo.toml b/components/datetime/Cargo.toml index 55e1bce3529..150518114b1 100644 --- a/components/datetime/Cargo.toml +++ b/components/datetime/Cargo.toml @@ -36,7 +36,7 @@ litemap = { version = "0.2", path = "../../utils/litemap", features = ["serde"] tinystr = { version = "0.4.5" } serde = { version = "1.0", features = ["derive"], optional = true } smallvec = "1.6" -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } [dev-dependencies] criterion = "0.3" diff --git a/components/decimal/Cargo.toml b/components/decimal/Cargo.toml index d3dbca7160d..781724e870c 100644 --- a/components/decimal/Cargo.toml +++ b/components/decimal/Cargo.toml @@ -33,7 +33,7 @@ icu_provider = { version = "0.2", path = "../../provider/core", features = ["mac fixed_decimal = { version = "0.2", path = "../../utils/fixed_decimal" } writeable = { version = "0.2", path = "../../utils/writeable" } serde = { version = "1.0", features = ["derive"], optional = true } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } [dev-dependencies] criterion = "0.3" diff --git a/components/locid/Cargo.toml b/components/locid/Cargo.toml index 3b034f450c8..4564834305f 100644 --- a/components/locid/Cargo.toml +++ b/components/locid/Cargo.toml @@ -34,7 +34,7 @@ all-features = true tinystr = "0.4.5" serde = { version = "1.0", optional = true } writeable = { version = "0.2", path = "../../utils/writeable" } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } [dev-dependencies] criterion = "0.3.3" diff --git a/components/plurals/Cargo.toml b/components/plurals/Cargo.toml index 2070d045188..e6bc0b35a4d 100644 --- a/components/plurals/Cargo.toml +++ b/components/plurals/Cargo.toml @@ -33,7 +33,7 @@ fixed_decimal = { version = "0.2", path = "../../utils/fixed_decimal" } icu_provider = { version = "0.2", path = "../../provider/core", features = ["macros"] } icu_locid = { version = "0.2", path = "../locid" } serde = { version = "1.0", features = ["derive"], optional = true } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } [dev-dependencies] criterion = "0.3" diff --git a/components/uniset/Cargo.toml b/components/uniset/Cargo.toml index 82dd930f791..2e6e9fd51b5 100644 --- a/components/uniset/Cargo.toml +++ b/components/uniset/Cargo.toml @@ -33,7 +33,7 @@ icu_provider = { version = "0.2", path = "../../provider/core", features = ["mac litemap = { version = "0.2", path = "../../utils/litemap" } serde = { version = "1.0", features = ["derive"], optional = true } tinystr = "0.4.5" -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } [dev-dependencies] criterion = "0.3.3" diff --git a/experimental/provider_ppucd/Cargo.toml b/experimental/provider_ppucd/Cargo.toml index 6a253182b85..b3092423fb8 100644 --- a/experimental/provider_ppucd/Cargo.toml +++ b/experimental/provider_ppucd/Cargo.toml @@ -30,4 +30,4 @@ icu_provider = { version = "0.2", path = "../../provider/core", features = ["pro icu_locid_macros = { version = "0.2", path = "../../components/locid/macros" } icu_uniset = { version = "0.2", path = "../../components/uniset" } tinystr = "0.4" -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } diff --git a/provider/cldr/Cargo.toml b/provider/cldr/Cargo.toml index 9a73a73461d..db300ec1af7 100644 --- a/provider/cldr/Cargo.toml +++ b/provider/cldr/Cargo.toml @@ -49,7 +49,7 @@ serde-tuple-vec-map = "1.0" smallstr = { version = "0.2", features = ["serde"] } smallvec = "1.6" tinystr = { version = "0.4.5", features = ["serde"] } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } # Dependencies for the download feature urlencoding = { version = "1.1", optional = true } diff --git a/provider/core/Cargo.toml b/provider/core/Cargo.toml index ab97f9451d0..37b53c95e10 100644 --- a/provider/core/Cargo.toml +++ b/provider/core/Cargo.toml @@ -36,7 +36,7 @@ macros = ["icu_provider_macros"] icu_locid = { version = "0.2", path = "../../components/locid" } tinystr = "0.4.5" writeable = { version = "0.2", path = "../../utils/writeable" } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } yoke = { version = "0.2", path = "../../utils/yoke", features = ["serde", "derive"] } icu_provider_macros = { version = "0.2", path = "../macros", optional = true } diff --git a/provider/fs/Cargo.toml b/provider/fs/Cargo.toml index b2be566fc54..f14000cf839 100644 --- a/provider/fs/Cargo.toml +++ b/provider/fs/Cargo.toml @@ -37,7 +37,7 @@ icu_provider = { version = "0.2", path = "../../provider/core", features = ["pro icu_locid = { version = "0.2", path = "../../components/locid", features = ["serde"] } serde = { version = "1.0", features = ["derive"] } erased-serde = { version = "0.3" } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } # Serializers # Note: serde_json is always included because it is used for parsing manifest.json diff --git a/provider/testdata/Cargo.toml b/provider/testdata/Cargo.toml index f12a7afb719..9532e6eff0e 100644 --- a/provider/testdata/Cargo.toml +++ b/provider/testdata/Cargo.toml @@ -134,7 +134,7 @@ icu_locid = { version = "0.2", path = "../../components/locid" } cargo_metadata = { version = "0.13", optional = true } serde = { version = "1.0", features = ["derive"], optional = true } serde_json = { version = "1.0", optional = true } -thiserror = { version = "1.0", optional = true } +displaydoc = { version = "0.2.3", default-features = false, optional = true } writeable = { version = "0.2", path = "../../utils/writeable", optional = true } [dev-dependencies] @@ -148,6 +148,6 @@ metadata = [ "icu_locid/serde", "serde_json", "serde", - "thiserror", + "displaydoc", "writeable", ] diff --git a/utils/fixed_decimal/Cargo.toml b/utils/fixed_decimal/Cargo.toml index 694b7b4af06..864e0ee97b7 100644 --- a/utils/fixed_decimal/Cargo.toml +++ b/utils/fixed_decimal/Cargo.toml @@ -29,7 +29,7 @@ all-features = true smallvec = "1.6" static_assertions = "1.1" writeable = { version = "0.2", path = "../../utils/writeable" } -thiserror = "1.0" +displaydoc = { version = "0.2.3", default-features = false } [dev-dependencies] criterion = "0.3.4" diff --git a/utils/pattern/Cargo.toml b/utils/pattern/Cargo.toml index e8b10154514..0969d0a2208 100644 --- a/utils/pattern/Cargo.toml +++ b/utils/pattern/Cargo.toml @@ -23,7 +23,7 @@ include = [ all-features = true [dependencies] -thiserror = "1" +displaydoc = { version = "0.2.3", default-features = false } writeable = { version = "0.2", path = "../writeable" } [dev-dependencies] From aef076758f0b20c523817d11ee886270c838bbb6 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 10:58:59 -0700 Subject: [PATCH 02/15] thiserror::Error -> displaydoc::Display fastmod thiserror::Error displaydoc::Display --- components/datetime/src/date.rs | 2 +- components/datetime/src/error.rs | 2 +- components/datetime/src/fields/length.rs | 2 +- components/datetime/src/fields/mod.rs | 2 +- components/datetime/src/fields/symbols.rs | 2 +- components/datetime/src/pattern/error.rs | 2 +- components/datetime/src/skeleton.rs | 2 +- components/decimal/src/error.rs | 2 +- components/locid/src/parser/errors.rs | 2 +- components/plurals/src/error.rs | 2 +- components/plurals/src/operands.rs | 2 +- components/plurals/src/rules/lexer.rs | 2 +- components/plurals/src/rules/parser.rs | 2 +- components/uniset/src/lib.rs | 2 +- experimental/provider_ppucd/src/error.rs | 2 +- provider/cldr/src/download/error.rs | 2 +- provider/cldr/src/error.rs | 2 +- provider/cldr/src/transform/numbers/decimal_pattern.rs | 2 +- provider/core/src/error.rs | 2 +- provider/fs/src/deserializer.rs | 2 +- provider/fs/src/error.rs | 2 +- provider/fs/src/export/serializers/mod.rs | 2 +- provider/testdata/src/metadata.rs | 2 +- utils/fixed_decimal/src/lib.rs | 2 +- utils/pattern/src/interpolator/error.rs | 2 +- utils/pattern/src/parser/error.rs | 2 +- utils/pattern/src/pattern/error.rs | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index d96f19fff3b..acb63667f15 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -6,7 +6,7 @@ use icu_locid::Locale; use std::convert::TryFrom; use std::ops::{Add, Sub}; use std::str::FromStr; -use thiserror::Error; +use displaydoc::Display; use tinystr::TinyStr8; #[derive(Error, Debug)] diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index a79e1c4953c..bb4655ef5f4 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -6,7 +6,7 @@ use crate::fields::FieldSymbol; use crate::pattern; use crate::skeleton::SkeletonError; use icu_provider::prelude::DataError; -use thiserror::Error; +use displaydoc::Display; /// A list of possible error outcomes for the [`DateTimeFormat`](crate::DateTimeFormat) struct. #[derive(Error, Debug)] diff --git a/components/datetime/src/fields/length.rs b/components/datetime/src/fields/length.rs index d6a068b2405..6908574414c 100644 --- a/components/datetime/src/fields/length.rs +++ b/components/datetime/src/fields/length.rs @@ -6,7 +6,7 @@ use std::{ cmp::{Ord, PartialOrd}, convert::TryFrom, }; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum LengthError { diff --git a/components/datetime/src/fields/mod.rs b/components/datetime/src/fields/mod.rs index 30652acc50c..0e3db22ceac 100644 --- a/components/datetime/src/fields/mod.rs +++ b/components/datetime/src/fields/mod.rs @@ -7,7 +7,7 @@ pub(crate) mod symbols; pub use length::{FieldLength, LengthError}; pub use symbols::*; -use thiserror::Error; +use displaydoc::Display; use std::{ cmp::{Ord, PartialOrd}, diff --git a/components/datetime/src/fields/symbols.rs b/components/datetime/src/fields/symbols.rs index 5ad40d7e75f..511508e7764 100644 --- a/components/datetime/src/fields/symbols.rs +++ b/components/datetime/src/fields/symbols.rs @@ -4,7 +4,7 @@ use crate::fields::FieldLength; use std::{cmp::Ordering, convert::TryFrom}; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum SymbolError { diff --git a/components/datetime/src/pattern/error.rs b/components/datetime/src/pattern/error.rs index 6ee580d3d83..28585d19a22 100644 --- a/components/datetime/src/pattern/error.rs +++ b/components/datetime/src/pattern/error.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::fields; -use thiserror::Error; +use displaydoc::Display; /// These strings follow the recommendations for the serde::de::Unexpected::Other type. /// https://docs.serde.rs/serde/de/enum.Unexpected.html#variant.Other diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index cf8d9f424f8..9326c08e2bf 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -6,7 +6,7 @@ use smallvec::SmallVec; use std::convert::TryFrom; -use thiserror::Error; +use displaydoc::Display; use crate::{ fields::{self, Field, FieldLength, FieldSymbol}, diff --git a/components/decimal/src/error.rs b/components/decimal/src/error.rs index 771ab0178c9..cf73e2baaba 100644 --- a/components/decimal/src/error.rs +++ b/components/decimal/src/error.rs @@ -4,7 +4,7 @@ //! Error types for decimal formatting. -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { diff --git a/components/locid/src/parser/errors.rs b/components/locid/src/parser/errors.rs index e46718760d4..a4ab065eab9 100644 --- a/components/locid/src/parser/errors.rs +++ b/components/locid/src/parser/errors.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use thiserror::Error; +use displaydoc::Display; /// List of parser errors that can be generated /// while parsing [`LanguageIdentifier`](crate::LanguageIdentifier), [`Locale`](crate::Locale), diff --git a/components/plurals/src/error.rs b/components/plurals/src/error.rs index b4d992f5d8d..fc1a0cc0ba8 100644 --- a/components/plurals/src/error.rs +++ b/components/plurals/src/error.rs @@ -4,7 +4,7 @@ use crate::rules::parser::ParserError; use icu_provider::prelude::DataError; -use thiserror::Error; +use displaydoc::Display; /// A list of possible error outcomes for the [`PluralRules`](crate::PluralRules) struct. /// diff --git a/components/plurals/src/operands.rs b/components/plurals/src/operands.rs index 981a295291c..f7962880c25 100644 --- a/components/plurals/src/operands.rs +++ b/components/plurals/src/operands.rs @@ -8,7 +8,7 @@ use std::io::Error as IOError; use std::isize; use std::num::ParseIntError; use std::str::FromStr; -use thiserror::Error; +use displaydoc::Display; /// A full plural operands representation of a number. See [CLDR Plural Rules](http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules) for complete operands description. /// Plural operands in compliance with [CLDR Plural Rules](http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules). diff --git a/components/plurals/src/rules/lexer.rs b/components/plurals/src/rules/lexer.rs index 3e81e638e27..95c309bd5fc 100644 --- a/components/plurals/src/rules/lexer.rs +++ b/components/plurals/src/rules/lexer.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use super::ast; -use thiserror::Error; +use displaydoc::Display; #[derive(Debug, PartialEq)] pub enum Token { diff --git a/components/plurals/src/rules/parser.rs b/components/plurals/src/rules/parser.rs index 7c6ee1640c3..5fce6492645 100644 --- a/components/plurals/src/rules/parser.rs +++ b/components/plurals/src/rules/parser.rs @@ -5,7 +5,7 @@ use super::ast; use super::lexer::{Lexer, Token}; use std::iter::Peekable; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug, PartialEq, Eq)] pub enum ParserError { diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index 3b5f1b686af..7380e13bc97 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -61,7 +61,7 @@ mod utils; pub use builder::UnicodeSetBuilder; pub use conversions::*; use icu_provider::DataError; -use thiserror::Error; +use displaydoc::Display; pub use uniset::UnicodeSet; pub use utils::*; diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index 4f441730b99..1b8498f3acb 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index ce4b87d89e5..bdfa5ad4a19 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -4,7 +4,7 @@ use std::io; use std::path::{Path, PathBuf}; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index 601aa791c6a..e1d33ffe766 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -4,7 +4,7 @@ use icu_locid::LanguageIdentifier; use std::path::{Path, PathBuf}; -use thiserror::Error; +use displaydoc::Display; #[cfg(feature = "download")] use crate::download; diff --git a/provider/cldr/src/transform/numbers/decimal_pattern.rs b/provider/cldr/src/transform/numbers/decimal_pattern.rs index f97de183300..5a594b40765 100644 --- a/provider/cldr/src/transform/numbers/decimal_pattern.rs +++ b/provider/cldr/src/transform/numbers/decimal_pattern.rs @@ -10,7 +10,7 @@ use icu_decimal::provider::AffixesV1; use itertools::Itertools; use std::borrow::Cow; use std::str::FromStr; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum Error { diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index 58c14dd2cc7..0973ebc9ea2 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -4,7 +4,7 @@ use crate::prelude::*; use std::any::TypeId; -use thiserror::Error; +use displaydoc::Display; /// Error enumeration for DataProvider. #[non_exhaustive] diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index e145309b873..7fd80c7ebeb 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -10,7 +10,7 @@ use icu_provider::yoke::Yokeable; use serde::Deserialize; use std::path::Path; use std::rc::Rc; -use thiserror::Error; +use displaydoc::Display; /// An Error type specifically for the [`Deserializer`](serde::Deserializer) that doesn't carry filenames #[derive(Error, Debug)] diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index 9cb1d902acf..c4444951ea5 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -4,7 +4,7 @@ use crate::manifest::SyntaxOption; use std::path::{Path, PathBuf}; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index 366eddcd7b0..8fa47c5d5c6 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -10,7 +10,7 @@ pub mod bincode; use crate::manifest::SyntaxOption; use std::io; use std::ops::Deref; -use thiserror::Error; +use displaydoc::Display; /// An Error type specifically for the [`Serializer`](serde::Serializer) that doesn't carry filenames #[derive(Error, Debug)] diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index c4ccc301aef..1f7aa067eb8 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -5,7 +5,7 @@ use cargo_metadata::{self, camino::Utf8PathBuf, MetadataCommand}; use icu_locid::LanguageIdentifier; use serde::Deserialize; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { diff --git a/utils/fixed_decimal/src/lib.rs b/utils/fixed_decimal/src/lib.rs index c203ba59aa1..b0a7e3c5028 100644 --- a/utils/fixed_decimal/src/lib.rs +++ b/utils/fixed_decimal/src/lib.rs @@ -44,7 +44,7 @@ mod uint_iterator; pub use decimal::FixedDecimal; pub use signum::Signum; -use thiserror::Error; +use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum Error { diff --git a/utils/pattern/src/interpolator/error.rs b/utils/pattern/src/interpolator/error.rs index 034f3e3e872..a569f33b559 100644 --- a/utils/pattern/src/interpolator/error.rs +++ b/utils/pattern/src/interpolator/error.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use std::{fmt::Debug, str::FromStr}; -use thiserror::Error; +use displaydoc::Display; /// An error returned when interpolating a pattern. /// diff --git a/utils/pattern/src/parser/error.rs b/utils/pattern/src/parser/error.rs index 1a4e98ea165..ad81d98d17c 100644 --- a/utils/pattern/src/parser/error.rs +++ b/utils/pattern/src/parser/error.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use std::fmt::Debug; -use thiserror::Error; +use displaydoc::Display; /// An error returned when parsing a pattern. /// diff --git a/utils/pattern/src/pattern/error.rs b/utils/pattern/src/pattern/error.rs index e1ea8c847bc..bb2b9a6db56 100644 --- a/utils/pattern/src/pattern/error.rs +++ b/utils/pattern/src/pattern/error.rs @@ -4,7 +4,7 @@ use crate::interpolator::InterpolatorError; use std::{fmt::Debug, str::FromStr}; -use thiserror::Error; +use displaydoc::Display; /// An error returned from a pattern. /// From a1739b54403d3d84e5056b6c44610c2018564305 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 11:00:04 -0700 Subject: [PATCH 03/15] fastmod "#\[error" "#[displaydoc" --- components/datetime/src/date.rs | 8 ++++---- components/datetime/src/error.rs | 12 +++++------ components/datetime/src/fields/length.rs | 2 +- components/datetime/src/fields/mod.rs | 2 +- components/datetime/src/fields/symbols.rs | 4 ++-- components/datetime/src/pattern/error.rs | 8 ++++---- components/datetime/src/skeleton.rs | 14 ++++++------- components/decimal/src/error.rs | 2 +- components/locid/src/parser/errors.rs | 6 +++--- components/plurals/src/error.rs | 4 ++-- components/plurals/src/operands.rs | 4 ++-- components/plurals/src/rules/lexer.rs | 4 ++-- components/plurals/src/rules/parser.rs | 12 +++++------ components/uniset/src/lib.rs | 6 +++--- experimental/provider_ppucd/src/error.rs | 4 ++-- provider/cldr/src/download/error.rs | 8 ++++---- provider/cldr/src/error.rs | 14 ++++++------- .../src/transform/numbers/decimal_pattern.rs | 4 ++-- provider/core/src/error.rs | 20 +++++++++---------- provider/fs/src/deserializer.rs | 8 ++++---- provider/fs/src/error.rs | 10 +++++----- provider/fs/src/export/serializers/mod.rs | 4 ++-- provider/testdata/src/metadata.rs | 8 ++++---- utils/fixed_decimal/src/lib.rs | 4 ++-- utils/pattern/src/interpolator/error.rs | 8 ++++---- utils/pattern/src/parser/error.rs | 8 ++++---- utils/pattern/src/pattern/error.rs | 4 ++-- 27 files changed, 96 insertions(+), 96 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index acb63667f15..ebba251d894 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -11,13 +11,13 @@ use tinystr::TinyStr8; #[derive(Error, Debug)] pub enum DateTimeError { - #[error(transparent)] + #[displaydoc(transparent)] Parse(#[from] std::num::ParseIntError), - #[error("{field} must be between 0-{max}")] + #[displaydoc("{field} must be between 0-{max}")] Overflow { field: &'static str, max: usize }, - #[error("{field} must be between {min}-0")] + #[displaydoc("{field} must be between {min}-0")] Underflow { field: &'static str, min: isize }, - #[error("Failed to parse time-zone offset")] + #[displaydoc("Failed to parse time-zone offset")] InvalidTimeZoneOffset, } diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index bb4655ef5f4..3a2b63c19cf 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -12,22 +12,22 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum DateTimeFormatError { /// An error originating from parsing a pattern. - #[error(transparent)] + #[displaydoc(transparent)] Pattern(#[from] pattern::Error), /// An error originating from the [`Write`](std::fmt::Write) trait. - #[error(transparent)] + #[displaydoc(transparent)] Format(#[from] std::fmt::Error), /// An error originating inside of the [`DataProvider`](icu_provider::DataProvider). - #[error(transparent)] + #[displaydoc(transparent)] DataProvider(#[from] DataError), /// An error originating from a missing field in datetime input. /// TODO: How can we return which field was missing? - #[error("Missing input field")] + #[displaydoc("Missing input field")] MissingInputField, /// An error originating from skeleton matching. - #[error(transparent)] + #[displaydoc(transparent)] Skeleton(#[from] SkeletonError), /// An error originating from an unsupported field in a datetime format. - #[error("Unsupported field: {0:?}")] + #[displaydoc("Unsupported field: {0:?}")] UnsupportedField(FieldSymbol), } diff --git a/components/datetime/src/fields/length.rs b/components/datetime/src/fields/length.rs index 6908574414c..c3139667d57 100644 --- a/components/datetime/src/fields/length.rs +++ b/components/datetime/src/fields/length.rs @@ -10,7 +10,7 @@ use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum LengthError { - #[error("Invalid length")] + #[displaydoc("Invalid length")] InvalidLength, } diff --git a/components/datetime/src/fields/mod.rs b/components/datetime/src/fields/mod.rs index 0e3db22ceac..6626769448d 100644 --- a/components/datetime/src/fields/mod.rs +++ b/components/datetime/src/fields/mod.rs @@ -16,7 +16,7 @@ use std::{ #[derive(Error, Debug)] pub enum Error { - #[error("Field {0:?} is not a valid length")] + #[displaydoc("Field {0:?} is not a valid length")] InvalidLength(FieldSymbol), } diff --git a/components/datetime/src/fields/symbols.rs b/components/datetime/src/fields/symbols.rs index 511508e7764..c32520c284f 100644 --- a/components/datetime/src/fields/symbols.rs +++ b/components/datetime/src/fields/symbols.rs @@ -9,10 +9,10 @@ use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum SymbolError { /// Unknown field symbol. - #[error("Unknown field symbol: {0}")] + #[displaydoc("Unknown field symbol: {0}")] Unknown(u8), /// Invalid character for a field symbol. - #[error("Invalid character for a field symbol: {0}")] + #[displaydoc("Invalid character for a field symbol: {0}")] Invalid(char), } diff --git a/components/datetime/src/pattern/error.rs b/components/datetime/src/pattern/error.rs index 28585d19a22..0f3cb2a64e0 100644 --- a/components/datetime/src/pattern/error.rs +++ b/components/datetime/src/pattern/error.rs @@ -12,13 +12,13 @@ use displaydoc::Display; /// "invalid value: unclosed literal in pattern, expected a valid UTS 35 pattern string at line 1 column 12" #[derive(Error, Debug, PartialEq)] pub enum Error { - #[error("{0:?} invalid field length in pattern")] + #[displaydoc("{0:?} invalid field length in pattern")] FieldLengthInvalid(fields::FieldSymbol), - #[error("unknown substitution {0} in pattern")] + #[displaydoc("unknown substitution {0} in pattern")] UnknownSubstitution(char), - #[error("unclosed literal in pattern")] + #[displaydoc("unclosed literal in pattern")] UnclosedLiteral, - #[error("unclosed placeholder in pattern")] + #[displaydoc("unclosed placeholder in pattern")] UnclosedPlaceholder, } diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index 9326c08e2bf..a23b1529d82 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -222,19 +222,19 @@ impl<'a> From<(&'a SkeletonV1, &'a PatternV1)> for AvailableFormatPattern<'a> { /// "invalid value: unclosed literal in pattern, expected a valid UTS 35 pattern string at line 1 column 12" #[derive(Error, Debug)] pub enum SkeletonError { - #[error("field too long in skeleton")] + #[displaydoc("field too long in skeleton")] InvalidFieldLength, - #[error("duplicate field in skeleton")] + #[displaydoc("duplicate field in skeleton")] DuplicateField, - #[error("symbol unknown {0} in skeleton")] + #[displaydoc("symbol unknown {0} in skeleton")] SymbolUnknown(char), - #[error("symbol invalid {0} in skeleton")] + #[displaydoc("symbol invalid {0} in skeleton")] SymbolInvalid(char), - #[error("symbol unimplemented {0} in skeleton")] + #[displaydoc("symbol unimplemented {0} in skeleton")] SymbolUnimplemented(char), - #[error("unimplemented field {0} in skeleton")] + #[displaydoc("unimplemented field {0} in skeleton")] UnimplementedField(char), - #[error(transparent)] + #[displaydoc(transparent)] Fields(#[from] fields::Error), } diff --git a/components/decimal/src/error.rs b/components/decimal/src/error.rs index cf73e2baaba..1c5a58fdb07 100644 --- a/components/decimal/src/error.rs +++ b/components/decimal/src/error.rs @@ -8,6 +8,6 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { - #[error("error loading data: {0}")] + #[displaydoc("error loading data: {0}")] Data(#[from] icu_provider::DataError), } diff --git a/components/locid/src/parser/errors.rs b/components/locid/src/parser/errors.rs index a4ab065eab9..d2b9c29251e 100644 --- a/components/locid/src/parser/errors.rs +++ b/components/locid/src/parser/errors.rs @@ -21,7 +21,7 @@ pub enum ParserError { /// /// assert_eq!(Language::from_str("x2"), Err(ParserError::InvalidLanguage)); /// ``` - #[error("The given language subtag is invalid")] + #[displaydoc("The given language subtag is invalid")] InvalidLanguage, /// Invalid script, region or variant subtag. @@ -36,7 +36,7 @@ pub enum ParserError { /// /// assert_eq!(Region::from_str("#@2X"), Err(ParserError::InvalidSubtag)); /// ``` - #[error("Invalid subtag")] + #[displaydoc("Invalid subtag")] InvalidSubtag, /// Invalid extension subtag. @@ -51,6 +51,6 @@ pub enum ParserError { /// /// assert_eq!(Key::from_str("#@2X"), Err(ParserError::InvalidExtension)); /// ``` - #[error("Invalid extension")] + #[displaydoc("Invalid extension")] InvalidExtension, } diff --git a/components/plurals/src/error.rs b/components/plurals/src/error.rs index fc1a0cc0ba8..4cbde8e5dd3 100644 --- a/components/plurals/src/error.rs +++ b/components/plurals/src/error.rs @@ -10,9 +10,9 @@ use displaydoc::Display; /// #[derive(Error, Debug)] pub enum PluralRulesError { - #[error("Parser error: {0}")] + #[displaydoc("Parser error: {0}")] Parser(#[from] ParserError), /// An error originating inside of the [`DataProvider`](icu_provider::DataProvider) - #[error("Data provider error: {0}")] + #[displaydoc("Data provider error: {0}")] DataProvider(#[from] DataError), } diff --git a/components/plurals/src/operands.rs b/components/plurals/src/operands.rs index f7962880c25..64db675eed1 100644 --- a/components/plurals/src/operands.rs +++ b/components/plurals/src/operands.rs @@ -89,10 +89,10 @@ impl PluralOperands { #[derive(Error, Debug, PartialEq, Eq)] pub enum OperandsError { /// Input to the Operands parsing was empty. - #[error("Input to the Operands parsing was empty")] + #[displaydoc("Input to the Operands parsing was empty")] Empty, /// Input to the Operands parsing was invalid. - #[error("Input to the Operands parsing was invalid")] + #[displaydoc("Input to the Operands parsing was invalid")] Invalid, } diff --git a/components/plurals/src/rules/lexer.rs b/components/plurals/src/rules/lexer.rs index 95c309bd5fc..a5b73c2e451 100644 --- a/components/plurals/src/rules/lexer.rs +++ b/components/plurals/src/rules/lexer.rs @@ -28,9 +28,9 @@ pub enum Token { #[derive(Error, Debug)] pub enum LexerError { - #[error("Expected byte: {0}")] + #[displaydoc("Expected byte: {0}")] ExpectedByte(u8), - #[error("Unknown token: {0}")] + #[displaydoc("Unknown token: {0}")] UnknownToken(u8), } diff --git a/components/plurals/src/rules/parser.rs b/components/plurals/src/rules/parser.rs index 5fce6492645..876da84ec1e 100644 --- a/components/plurals/src/rules/parser.rs +++ b/components/plurals/src/rules/parser.rs @@ -9,17 +9,17 @@ use displaydoc::Display; #[derive(Error, Debug, PartialEq, Eq)] pub enum ParserError { - #[error("expected 'AND' condition")] + #[displaydoc("expected 'AND' condition")] ExpectedAndCondition, - #[error("expected relation")] + #[displaydoc("expected relation")] ExpectedRelation, - #[error("expected operator")] + #[displaydoc("expected operator")] ExpectedOperator, - #[error("expected operand")] + #[displaydoc("expected operand")] ExpectedOperand, - #[error("expected value")] + #[displaydoc("expected value")] ExpectedValue, - #[error("expected sample type")] + #[displaydoc("expected sample type")] ExpectedSampleType, } diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index 7380e13bc97..d4ceb72fa1c 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -68,11 +68,11 @@ pub use utils::*; /// Custom Errors for [`UnicodeSet`]. #[derive(Error, Debug)] pub enum UnicodeSetError { - #[error("Invalid set: {0:?}")] + #[displaydoc("Invalid set: {0:?}")] InvalidSet(Vec), - #[error("Invalid range: {0}..{1}")] + #[displaydoc("Invalid range: {0}..{1}")] InvalidRange(u32, u32), - #[error(transparent)] + #[displaydoc(transparent)] PropDataLoad(#[from] DataError), } diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index 1b8498f3acb..af8b6a3d579 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -6,12 +6,12 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { - #[error(transparent)] + #[displaydoc(transparent)] PpucdParse(#[from] PpucdParseError), } #[derive(Error, Debug, PartialEq, Copy, Clone)] -#[error("Could not parse PPUCD file: {src}")] +#[displaydoc("Could not parse PPUCD file: {src}")] pub struct PpucdParseError { pub src: &'static str, } diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index bdfa5ad4a19..978d50f895d 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -8,13 +8,13 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { - #[error("{0}: {1:?}")] + #[displaydoc("{0}: {1:?}")] Io(#[source] io::Error, Option), - #[error(transparent)] + #[displaydoc(transparent)] Reqwest(#[from] reqwest::Error), - #[error("HTTP request failed: {0}: {1}")] + #[displaydoc("HTTP request failed: {0}: {1}")] HttpStatus(reqwest::StatusCode, String), - #[error("dirs::cache_dir() returned None")] + #[displaydoc("dirs::cache_dir() returned None")] NoCacheDir, } diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index e1d33ffe766..93353e68a99 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -12,18 +12,18 @@ use crate::download; #[non_exhaustive] #[derive(Error, Debug)] pub enum Error { - #[error("{0}: {1:?}")] + #[displaydoc("{0}: {1:?}")] Io(#[source] std::io::Error, Option), - #[error("JSON error: {0}: {1:?}")] + #[displaydoc("JSON error: {0}: {1:?}")] Json(#[source] serde_json::error::Error, Option), - #[error("{0}: {1:?}")] + #[displaydoc("{0}: {1:?}")] Custom(String, Option), - #[error(transparent)] + #[displaydoc(transparent)] MissingSource(MissingSourceError), #[cfg(feature = "download")] - #[error(transparent)] + #[displaydoc(transparent)] Download(download::Error), - #[error("poisoned lock on CLDR provider")] + #[displaydoc("poisoned lock on CLDR provider")] Poison, } @@ -38,7 +38,7 @@ impl From for Error { } #[derive(Error, Debug, PartialEq, Copy, Clone)] -#[error("Missing CLDR data source: {src}")] +#[displaydoc("Missing CLDR data source: {src}")] pub struct MissingSourceError { pub src: &'static str, } diff --git a/provider/cldr/src/transform/numbers/decimal_pattern.rs b/provider/cldr/src/transform/numbers/decimal_pattern.rs index 5a594b40765..fe0b4374519 100644 --- a/provider/cldr/src/transform/numbers/decimal_pattern.rs +++ b/provider/cldr/src/transform/numbers/decimal_pattern.rs @@ -14,9 +14,9 @@ use displaydoc::Display; #[derive(Error, Debug, PartialEq)] pub enum Error { - #[error("No body in decimal subpattern")] + #[displaydoc("No body in decimal subpattern")] NoBodyInSubpattern, - #[error("Unknown decimal body: {0}")] + #[displaydoc("Unknown decimal body: {0}")] UnknownPatternBody(String), } diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index 0973ebc9ea2..2ab04009aad 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -11,33 +11,33 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { /// The data provider does not support the resource key. - #[error("Unsupported resource key: {0}")] + #[displaydoc("Unsupported resource key: {0}")] UnsupportedResourceKey(ResourceKey), /// The data provider supports the key, but does not have data for the specific entry. - #[error("Unavailable resource options: {0}")] + #[displaydoc("Unavailable resource options: {0}")] UnavailableResourceOptions(DataRequest), /// The resource was not returned due to a filter. The resource may or may not be available. - #[error("Resource was filtered: {1}: {0}")] + #[displaydoc("Resource was filtered: {1}: {0}")] FilteredResource(DataRequest, String), /// The data provider supports the key, but it requires a language identifier, which was /// missing from the request. - #[error("Requested key needs language identifier in request: {0}")] + #[displaydoc("Requested key needs language identifier in request: {0}")] NeedsLanguageIdentifier(DataRequest), /// The operation cannot be completed without more type information. For example, data /// cannot be deserialized without the concrete type. - #[error("Complete type information is required")] + #[displaydoc("Complete type information is required")] NeedsTypeInfo, /// The payload is missing. This error is usually unexpected. - #[error("Payload is missing")] + #[displaydoc("Payload is missing")] MissingPayload, /// The TypeID of the payload does not match the expected TypeID. - #[error("Mismatched type: payload is {actual:?} (expected from generic type paramenter: {generic:?})")] + #[displaydoc("Mismatched type: payload is {actual:?} (expected from generic type paramenter: {generic:?})")] MismatchedType { /// The actual TypeID of the payload, if available. actual: Option, @@ -47,16 +47,16 @@ pub enum Error { }, /// The requested operation failed to unwrap an Rc backing the data payload. - #[error("Could not unwrap Rc due to multiple references")] + #[displaydoc("Could not unwrap Rc due to multiple references")] MultipleReferences, /// An error occured during serialization or deserialization. #[cfg(feature = "erased-serde")] - #[error("Serde error: {0}")] + #[displaydoc("Serde error: {0}")] Serde(#[from] erased_serde::Error), /// The data provider encountered some other error when loading the resource, such as I/O. - #[error("Failed to load resource: {0}")] + #[displaydoc("Failed to load resource: {0}")] Resource(#[from] Box), } diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index 7fd80c7ebeb..a992e7a19d6 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -15,15 +15,15 @@ use displaydoc::Display; /// An Error type specifically for the [`Deserializer`](serde::Deserializer) that doesn't carry filenames #[derive(Error, Debug)] pub enum Error { - #[error(transparent)] + #[displaydoc(transparent)] Json(#[from] serde_json::error::Error), #[cfg(feature = "bincode")] - #[error(transparent)] + #[displaydoc(transparent)] Bincode(#[from] bincode::Error), - #[error(transparent)] + #[displaydoc(transparent)] DataProvider(#[from] DataError), #[allow(dead_code)] - #[error("Unknown syntax: {0:?}")] + #[displaydoc("Unknown syntax: {0:?}")] UnknownSyntax(SyntaxOption), } diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index c4444951ea5..d189055f5cc 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -8,19 +8,19 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { - #[error("{0}: {1:?}")] + #[displaydoc("{0}: {1:?}")] Io(#[source] std::io::Error, Option), - #[error(transparent)] + #[displaydoc(transparent)] DataProvider(#[from] icu_provider::DataError), - #[error("Deserializer error: {0}: {1:?}")] + #[displaydoc("Deserializer error: {0}: {1:?}")] Deserializer( #[source] Box, Option, ), #[cfg(feature = "export")] - #[error("Serializer error: {0}: {1:?}")] + #[displaydoc("Serializer error: {0}: {1:?}")] Serializer(#[source] erased_serde::Error, Option), - #[error("Unknown syntax {0:?}. Do you need to enable a feature?")] + #[displaydoc("Unknown syntax {0:?}. Do you need to enable a feature?")] UnknownSyntax(SyntaxOption), } diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index 8fa47c5d5c6..9f6334ddf92 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -15,9 +15,9 @@ use displaydoc::Display; /// An Error type specifically for the [`Serializer`](serde::Serializer) that doesn't carry filenames #[derive(Error, Debug)] pub enum Error { - #[error(transparent)] + #[displaydoc(transparent)] Io(#[from] io::Error), - #[error(transparent)] + #[displaydoc(transparent)] Serializer(#[from] erased_serde::Error), } diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index 1f7aa067eb8..b78b28bde9d 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -9,13 +9,13 @@ use displaydoc::Display; #[derive(Error, Debug)] pub enum Error { - #[error("Cargo Error: {0}")] + #[displaydoc("Cargo Error: {0}")] Cargo(#[from] cargo_metadata::Error), - #[error("Serde Error: {0}")] + #[displaydoc("Serde Error: {0}")] SerdeJson(#[from] serde_json::Error), - #[error("{0}: package not found", env!("CARGO_PKG_NAME"))] + #[displaydoc("{0}: package not found", env!("CARGO_PKG_NAME"))] PackageNotFound, - #[error("package.metadata.icu4x_testdata not found")] + #[displaydoc("package.metadata.icu4x_testdata not found")] MetadataNotFound, } diff --git a/utils/fixed_decimal/src/lib.rs b/utils/fixed_decimal/src/lib.rs index b0a7e3c5028..18fc75608c1 100644 --- a/utils/fixed_decimal/src/lib.rs +++ b/utils/fixed_decimal/src/lib.rs @@ -61,7 +61,7 @@ pub enum Error { /// let mut dec1 = FixedDecimal::from(123); /// assert_eq!(Error::Limit, dec1.multiply_pow10(std::i16::MAX).unwrap_err()); /// ``` - #[error("Magnitude or number of digits exceeded")] + #[displaydoc("Magnitude or number of digits exceeded")] Limit, /// The input of a string that is supposed to be converted to FixedDecimal is not accepted. /// @@ -70,6 +70,6 @@ pub enum Error { /// Strings of form "12_345_678" are not accepted, the accepted format is "12345678". /// Also '.' shouldn't be first or the last characters, i. e. .123 and 123. are not accepted, and instead 0.123 and /// 123 (or 123.0) must be used. - #[error("Failed to parse the input string")] + #[displaydoc("Failed to parse the input string")] Syntax, } diff --git a/utils/pattern/src/interpolator/error.rs b/utils/pattern/src/interpolator/error.rs index a569f33b559..2ddbf086d67 100644 --- a/utils/pattern/src/interpolator/error.rs +++ b/utils/pattern/src/interpolator/error.rs @@ -16,12 +16,12 @@ where K: Debug + FromStr + PartialEq, K::Err: Debug + PartialEq, { - #[error("Invalid placeholder: {0:?}")] + #[displaydoc("Invalid placeholder: {0:?}")] InvalidPlaceholder(K::Err), - #[error("Missing placeholder: {0:?}")] + #[displaydoc("Missing placeholder: {0:?}")] MissingPlaceholder(K), - #[error("Unclosed placeholder")] + #[displaydoc("Unclosed placeholder")] UnclosedPlaceholder, - #[error("Unclosed quoted literal")] + #[displaydoc("Unclosed quoted literal")] UnclosedQuotedLiteral, } diff --git a/utils/pattern/src/parser/error.rs b/utils/pattern/src/parser/error.rs index ad81d98d17c..9720ed79c09 100644 --- a/utils/pattern/src/parser/error.rs +++ b/utils/pattern/src/parser/error.rs @@ -28,18 +28,18 @@ where E: Debug, { /// Encountered an illegal character. - #[error("Illegal character: {0}.")] + #[displaydoc("Illegal character: {0}.")] IllegalCharacter(char), /// Placeholder hould not be parsed from the given string slice. - #[error("Invalid placeholder: {0:?}")] + #[displaydoc("Invalid placeholder: {0:?}")] InvalidPlaceholder(E), /// The pattern contains an unclosed placeholder. - #[error("Unclosed placeholder")] + #[displaydoc("Unclosed placeholder")] UnclosedPlaceholder, /// The pattern contains an unclosed quoted literal. - #[error("Unclosed quoted literal")] + #[displaydoc("Unclosed quoted literal")] UnclosedQuotedLiteral, } diff --git a/utils/pattern/src/pattern/error.rs b/utils/pattern/src/pattern/error.rs index bb2b9a6db56..9944b8c4b01 100644 --- a/utils/pattern/src/pattern/error.rs +++ b/utils/pattern/src/pattern/error.rs @@ -17,9 +17,9 @@ where K: Debug + FromStr + PartialEq, K::Err: Debug + PartialEq, { - #[error("Interpolator error: {0:?}")] + #[displaydoc("Interpolator error: {0:?}")] Interpolator(InterpolatorError), - #[error("Format error: {0:?}")] + #[displaydoc("Format error: {0:?}")] Format(std::fmt::Error), } From 9f05639e0f921fd163cbd4327883d3ca97958647 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 11:06:53 -0700 Subject: [PATCH 04/15] derive(Error) -> derive(Display) fastmod "derive\(Error" "derive(Display" --- components/datetime/src/date.rs | 2 +- components/datetime/src/error.rs | 2 +- components/datetime/src/fields/length.rs | 2 +- components/datetime/src/fields/mod.rs | 2 +- components/datetime/src/fields/symbols.rs | 2 +- components/datetime/src/pattern/error.rs | 2 +- components/datetime/src/skeleton.rs | 2 +- components/decimal/src/error.rs | 2 +- components/locid/src/parser/errors.rs | 2 +- components/plurals/src/error.rs | 2 +- components/plurals/src/operands.rs | 2 +- components/plurals/src/rules/lexer.rs | 2 +- components/plurals/src/rules/parser.rs | 2 +- components/uniset/src/lib.rs | 2 +- experimental/provider_ppucd/src/error.rs | 4 ++-- provider/cldr/src/download/error.rs | 2 +- provider/cldr/src/error.rs | 4 ++-- provider/cldr/src/transform/numbers/decimal_pattern.rs | 2 +- provider/core/src/error.rs | 2 +- provider/fs/src/deserializer.rs | 2 +- provider/fs/src/error.rs | 2 +- provider/fs/src/export/serializers/mod.rs | 2 +- provider/testdata/src/metadata.rs | 2 +- utils/fixed_decimal/src/lib.rs | 2 +- utils/pattern/src/interpolator/error.rs | 2 +- utils/pattern/src/parser/error.rs | 2 +- utils/pattern/src/pattern/error.rs | 2 +- 27 files changed, 29 insertions(+), 29 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index ebba251d894..a82237ef79e 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -9,7 +9,7 @@ use std::str::FromStr; use displaydoc::Display; use tinystr::TinyStr8; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum DateTimeError { #[displaydoc(transparent)] Parse(#[from] std::num::ParseIntError), diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index 3a2b63c19cf..470e6a7ad7e 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -9,7 +9,7 @@ use icu_provider::prelude::DataError; use displaydoc::Display; /// A list of possible error outcomes for the [`DateTimeFormat`](crate::DateTimeFormat) struct. -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum DateTimeFormatError { /// An error originating from parsing a pattern. #[displaydoc(transparent)] diff --git a/components/datetime/src/fields/length.rs b/components/datetime/src/fields/length.rs index c3139667d57..83e52c18a1b 100644 --- a/components/datetime/src/fields/length.rs +++ b/components/datetime/src/fields/length.rs @@ -8,7 +8,7 @@ use std::{ }; use displaydoc::Display; -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum LengthError { #[displaydoc("Invalid length")] InvalidLength, diff --git a/components/datetime/src/fields/mod.rs b/components/datetime/src/fields/mod.rs index 6626769448d..272a18ac00d 100644 --- a/components/datetime/src/fields/mod.rs +++ b/components/datetime/src/fields/mod.rs @@ -14,7 +14,7 @@ use std::{ convert::{TryFrom, TryInto}, }; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc("Field {0:?} is not a valid length")] InvalidLength(FieldSymbol), diff --git a/components/datetime/src/fields/symbols.rs b/components/datetime/src/fields/symbols.rs index c32520c284f..d32860df4ae 100644 --- a/components/datetime/src/fields/symbols.rs +++ b/components/datetime/src/fields/symbols.rs @@ -6,7 +6,7 @@ use crate::fields::FieldLength; use std::{cmp::Ordering, convert::TryFrom}; use displaydoc::Display; -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum SymbolError { /// Unknown field symbol. #[displaydoc("Unknown field symbol: {0}")] diff --git a/components/datetime/src/pattern/error.rs b/components/datetime/src/pattern/error.rs index 0f3cb2a64e0..4b01e8f2850 100644 --- a/components/datetime/src/pattern/error.rs +++ b/components/datetime/src/pattern/error.rs @@ -10,7 +10,7 @@ use displaydoc::Display; /// /// Serde will generate an error such as: /// "invalid value: unclosed literal in pattern, expected a valid UTS 35 pattern string at line 1 column 12" -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum Error { #[displaydoc("{0:?} invalid field length in pattern")] FieldLengthInvalid(fields::FieldSymbol), diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index a23b1529d82..afd2e1f176a 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -220,7 +220,7 @@ impl<'a> From<(&'a SkeletonV1, &'a PatternV1)> for AvailableFormatPattern<'a> { /// /// Serde will generate an error such as: /// "invalid value: unclosed literal in pattern, expected a valid UTS 35 pattern string at line 1 column 12" -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum SkeletonError { #[displaydoc("field too long in skeleton")] InvalidFieldLength, diff --git a/components/decimal/src/error.rs b/components/decimal/src/error.rs index 1c5a58fdb07..eb5610e6216 100644 --- a/components/decimal/src/error.rs +++ b/components/decimal/src/error.rs @@ -6,7 +6,7 @@ use displaydoc::Display; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc("error loading data: {0}")] Data(#[from] icu_provider::DataError), diff --git a/components/locid/src/parser/errors.rs b/components/locid/src/parser/errors.rs index d2b9c29251e..b2a8b10075e 100644 --- a/components/locid/src/parser/errors.rs +++ b/components/locid/src/parser/errors.rs @@ -7,7 +7,7 @@ use displaydoc::Display; /// List of parser errors that can be generated /// while parsing [`LanguageIdentifier`](crate::LanguageIdentifier), [`Locale`](crate::Locale), /// [`subtags`](crate::subtags) or [`extensions`](crate::extensions). -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum ParserError { /// Invalid language subtag. /// diff --git a/components/plurals/src/error.rs b/components/plurals/src/error.rs index 4cbde8e5dd3..001281bb7b6 100644 --- a/components/plurals/src/error.rs +++ b/components/plurals/src/error.rs @@ -8,7 +8,7 @@ use displaydoc::Display; /// A list of possible error outcomes for the [`PluralRules`](crate::PluralRules) struct. /// -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum PluralRulesError { #[displaydoc("Parser error: {0}")] Parser(#[from] ParserError), diff --git a/components/plurals/src/operands.rs b/components/plurals/src/operands.rs index 64db675eed1..97a317ba948 100644 --- a/components/plurals/src/operands.rs +++ b/components/plurals/src/operands.rs @@ -86,7 +86,7 @@ impl PluralOperands { } } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] pub enum OperandsError { /// Input to the Operands parsing was empty. #[displaydoc("Input to the Operands parsing was empty")] diff --git a/components/plurals/src/rules/lexer.rs b/components/plurals/src/rules/lexer.rs index a5b73c2e451..85435a01d87 100644 --- a/components/plurals/src/rules/lexer.rs +++ b/components/plurals/src/rules/lexer.rs @@ -26,7 +26,7 @@ pub enum Token { E, } -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum LexerError { #[displaydoc("Expected byte: {0}")] ExpectedByte(u8), diff --git a/components/plurals/src/rules/parser.rs b/components/plurals/src/rules/parser.rs index 876da84ec1e..eb1ba8ce546 100644 --- a/components/plurals/src/rules/parser.rs +++ b/components/plurals/src/rules/parser.rs @@ -7,7 +7,7 @@ use super::lexer::{Lexer, Token}; use std::iter::Peekable; use displaydoc::Display; -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] pub enum ParserError { #[displaydoc("expected 'AND' condition")] ExpectedAndCondition, diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index d4ceb72fa1c..628128cb365 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -66,7 +66,7 @@ pub use uniset::UnicodeSet; pub use utils::*; /// Custom Errors for [`UnicodeSet`]. -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum UnicodeSetError { #[displaydoc("Invalid set: {0:?}")] InvalidSet(Vec), diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index af8b6a3d579..93d5de69d48 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -4,13 +4,13 @@ use displaydoc::Display; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc(transparent)] PpucdParse(#[from] PpucdParseError), } -#[derive(Error, Debug, PartialEq, Copy, Clone)] +#[derive(Display, Debug, PartialEq, Copy, Clone)] #[displaydoc("Could not parse PPUCD file: {src}")] pub struct PpucdParseError { pub src: &'static str, diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index 978d50f895d..136929809be 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -6,7 +6,7 @@ use std::io; use std::path::{Path, PathBuf}; use displaydoc::Display; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] io::Error, Option), diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index 93353e68a99..6b91a11d74e 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -10,7 +10,7 @@ use displaydoc::Display; use crate::download; #[non_exhaustive] -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] std::io::Error, Option), @@ -37,7 +37,7 @@ impl From for Error { } } -#[derive(Error, Debug, PartialEq, Copy, Clone)] +#[derive(Display, Debug, PartialEq, Copy, Clone)] #[displaydoc("Missing CLDR data source: {src}")] pub struct MissingSourceError { pub src: &'static str, diff --git a/provider/cldr/src/transform/numbers/decimal_pattern.rs b/provider/cldr/src/transform/numbers/decimal_pattern.rs index fe0b4374519..fda6912b681 100644 --- a/provider/cldr/src/transform/numbers/decimal_pattern.rs +++ b/provider/cldr/src/transform/numbers/decimal_pattern.rs @@ -12,7 +12,7 @@ use std::borrow::Cow; use std::str::FromStr; use displaydoc::Display; -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum Error { #[displaydoc("No body in decimal subpattern")] NoBodyInSubpattern, diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index 2ab04009aad..6f4648089b7 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -8,7 +8,7 @@ use displaydoc::Display; /// Error enumeration for DataProvider. #[non_exhaustive] -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { /// The data provider does not support the resource key. #[displaydoc("Unsupported resource key: {0}")] diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index a992e7a19d6..8626bfa7094 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -13,7 +13,7 @@ use std::rc::Rc; use displaydoc::Display; /// An Error type specifically for the [`Deserializer`](serde::Deserializer) that doesn't carry filenames -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc(transparent)] Json(#[from] serde_json::error::Error), diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index d189055f5cc..d522ca63480 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -6,7 +6,7 @@ use crate::manifest::SyntaxOption; use std::path::{Path, PathBuf}; use displaydoc::Display; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] std::io::Error, Option), diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index 9f6334ddf92..562a9de82f6 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -13,7 +13,7 @@ use std::ops::Deref; use displaydoc::Display; /// An Error type specifically for the [`Serializer`](serde::Serializer) that doesn't carry filenames -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc(transparent)] Io(#[from] io::Error), diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index b78b28bde9d..f135882856f 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -7,7 +7,7 @@ use icu_locid::LanguageIdentifier; use serde::Deserialize; use displaydoc::Display; -#[derive(Error, Debug)] +#[derive(Display, Debug)] pub enum Error { #[displaydoc("Cargo Error: {0}")] Cargo(#[from] cargo_metadata::Error), diff --git a/utils/fixed_decimal/src/lib.rs b/utils/fixed_decimal/src/lib.rs index 18fc75608c1..528a1ccf6a7 100644 --- a/utils/fixed_decimal/src/lib.rs +++ b/utils/fixed_decimal/src/lib.rs @@ -46,7 +46,7 @@ pub use decimal::FixedDecimal; pub use signum::Signum; use displaydoc::Display; -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum Error { /// The magnitude or number of digits exceeds the limit of the FixedDecimal. The highest /// magnitude of the most significant digit is std::i16::MAX, and the lowest magnitude of the diff --git a/utils/pattern/src/interpolator/error.rs b/utils/pattern/src/interpolator/error.rs index 2ddbf086d67..6ac68942e14 100644 --- a/utils/pattern/src/interpolator/error.rs +++ b/utils/pattern/src/interpolator/error.rs @@ -10,7 +10,7 @@ use displaydoc::Display; /// # Type parameters /// /// - `K`: A key for the replacement provider. -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum InterpolatorError where K: Debug + FromStr + PartialEq, diff --git a/utils/pattern/src/parser/error.rs b/utils/pattern/src/parser/error.rs index 9720ed79c09..32d551e1246 100644 --- a/utils/pattern/src/parser/error.rs +++ b/utils/pattern/src/parser/error.rs @@ -22,7 +22,7 @@ use displaydoc::Display; /// - `E`: An error of the replacement type which implements [`FromStr`]. /// /// [`FromStr`]: std::str::FromStr -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum ParserError where E: Debug, diff --git a/utils/pattern/src/pattern/error.rs b/utils/pattern/src/pattern/error.rs index 9944b8c4b01..d8451420147 100644 --- a/utils/pattern/src/pattern/error.rs +++ b/utils/pattern/src/pattern/error.rs @@ -11,7 +11,7 @@ use displaydoc::Display; /// # Type parameters /// /// - `K`: A key for the replacement provider. -#[derive(Error, Debug, PartialEq)] +#[derive(Display, Debug, PartialEq)] pub enum PatternError where K: Debug + FromStr + PartialEq, From 116cead9768e6372e880a4d17993138007706946 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 11:33:51 -0700 Subject: [PATCH 05/15] Replace #[from] with manual impls --- components/datetime/src/date.rs | 8 +++++- components/datetime/src/error.rs | 32 ++++++++++++++++++++--- components/datetime/src/skeleton.rs | 8 +++++- components/decimal/src/error.rs | 8 +++++- components/plurals/src/error.rs | 16 ++++++++++-- components/uniset/src/lib.rs | 8 +++++- experimental/provider_ppucd/src/error.rs | 8 +++++- provider/cldr/src/download/error.rs | 8 +++++- provider/core/src/error.rs | 16 ++++++++++-- provider/fs/src/deserializer.rs | 24 ++++++++++++++--- provider/fs/src/error.rs | 8 +++++- provider/fs/src/export/serializers/mod.rs | 15 +++++++++-- provider/testdata/src/metadata.rs | 16 ++++++++++-- 13 files changed, 153 insertions(+), 22 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index a82237ef79e..5ec98ede283 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -12,7 +12,7 @@ use tinystr::TinyStr8; #[derive(Display, Debug)] pub enum DateTimeError { #[displaydoc(transparent)] - Parse(#[from] std::num::ParseIntError), + Parse(std::num::ParseIntError), #[displaydoc("{field} must be between 0-{max}")] Overflow { field: &'static str, max: usize }, #[displaydoc("{field} must be between {min}-0")] @@ -21,6 +21,12 @@ pub enum DateTimeError { InvalidTimeZoneOffset, } +impl From for Error { + fn from(e: std::num::ParseIntError) -> Self { + Error::Parse(e) + } +} + /// Representation of a formattable calendar date. Supports dates in any calendar system that uses /// solar days indexed by an era, year, month, and day. /// diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index 470e6a7ad7e..ba651f59070 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -13,21 +13,45 @@ use displaydoc::Display; pub enum DateTimeFormatError { /// An error originating from parsing a pattern. #[displaydoc(transparent)] - Pattern(#[from] pattern::Error), + Pattern(pattern::Error), /// An error originating from the [`Write`](std::fmt::Write) trait. #[displaydoc(transparent)] - Format(#[from] std::fmt::Error), + Format(std::fmt::Error), /// An error originating inside of the [`DataProvider`](icu_provider::DataProvider). #[displaydoc(transparent)] - DataProvider(#[from] DataError), + DataProvider(DataError), /// An error originating from a missing field in datetime input. /// TODO: How can we return which field was missing? #[displaydoc("Missing input field")] MissingInputField, /// An error originating from skeleton matching. #[displaydoc(transparent)] - Skeleton(#[from] SkeletonError), + Skeleton(SkeletonError), /// An error originating from an unsupported field in a datetime format. #[displaydoc("Unsupported field: {0:?}")] UnsupportedField(FieldSymbol), } + +impl From for DateTimeFormatError { + fn from(e: pattern::Error) -> Self { + DateTimeFormatError::Pattern(e) + } +} + +impl From for DateTimeFormatError { + fn from(e: DataError) -> Self { + DateTimeFormatError::DataProvider(e) + } +} + +impl From for DateTimeFormatError { + fn from(e: std::fmt::Error) -> Self { + DateTimeFormatError::Format(e) + } +} + +impl From for DateTimeFormatError { + fn from(e: SkeletonError) -> Self { + DateTimeFormatError::Skeleton(e) + } +} diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index afd2e1f176a..aa8d4efcdb5 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -235,7 +235,13 @@ pub enum SkeletonError { #[displaydoc("unimplemented field {0} in skeleton")] UnimplementedField(char), #[displaydoc(transparent)] - Fields(#[from] fields::Error), + Fields(fields::Error), +} + +impl From for SkeletonError { + fn from(e: fields::Error) -> Self { + SkeletonError::Fields(e) + } } impl From for SkeletonError { diff --git a/components/decimal/src/error.rs b/components/decimal/src/error.rs index eb5610e6216..d303aa4d70b 100644 --- a/components/decimal/src/error.rs +++ b/components/decimal/src/error.rs @@ -9,5 +9,11 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc("error loading data: {0}")] - Data(#[from] icu_provider::DataError), + Data(icu_provider::DataError), } + +impl From for Error { + fn from(e: icu_provider::DataError) -> Self { + Error::Data(e) + } +} \ No newline at end of file diff --git a/components/plurals/src/error.rs b/components/plurals/src/error.rs index 001281bb7b6..c9ceed98139 100644 --- a/components/plurals/src/error.rs +++ b/components/plurals/src/error.rs @@ -11,8 +11,20 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum PluralRulesError { #[displaydoc("Parser error: {0}")] - Parser(#[from] ParserError), + Parser(ParserError), /// An error originating inside of the [`DataProvider`](icu_provider::DataProvider) #[displaydoc("Data provider error: {0}")] - DataProvider(#[from] DataError), + DataProvider(DataError), } + +impl From for PluralRulesError { + fn from(e: ParserError) -> Self { + PluralRulesError::Parser(e) + } +} + +impl From for PluralRulesError { + fn from(e: DataError) -> Self { + PluralRulesError::DataProvider(e) + } +} \ No newline at end of file diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index 628128cb365..0f4175e049e 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -73,7 +73,13 @@ pub enum UnicodeSetError { #[displaydoc("Invalid range: {0}..{1}")] InvalidRange(u32, u32), #[displaydoc(transparent)] - PropDataLoad(#[from] DataError), + PropDataLoad(DataError), +} + +impl From for UnicodeSetError { + fn from(e: DataError) -> Self { + UnicodeSetError::PropDataLoad(e) + } } #[derive(PartialEq)] diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index 93d5de69d48..dba2409db79 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -7,7 +7,7 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc(transparent)] - PpucdParse(#[from] PpucdParseError), + PpucdParse(PpucdParseError), } #[derive(Display, Debug, PartialEq, Copy, Clone)] @@ -15,3 +15,9 @@ pub enum Error { pub struct PpucdParseError { pub src: &'static str, } + +impl From for Error { + fn from(e: PpucdParseError) -> Self { + Error::PpucdParse(e) + } +} diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index 136929809be..4cebf782f6a 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -11,13 +11,19 @@ pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] io::Error, Option), #[displaydoc(transparent)] - Reqwest(#[from] reqwest::Error), + Reqwest(reqwest::Error), #[displaydoc("HTTP request failed: {0}: {1}")] HttpStatus(reqwest::StatusCode, String), #[displaydoc("dirs::cache_dir() returned None")] NoCacheDir, } +impl From for Error { + fn from(e: reqwest::Error) -> Self { + Error::Reqwest(e) + } +} + /// To help with debugging, I/O errors should be paired with a file path. /// If a path is unavailable, create the error directly: [`Error::Io`]`(err, `[`None`]`)` impl> From<(std::io::Error, P)> for Error { diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index 6f4648089b7..eb9427afe70 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -53,11 +53,23 @@ pub enum Error { /// An error occured during serialization or deserialization. #[cfg(feature = "erased-serde")] #[displaydoc("Serde error: {0}")] - Serde(#[from] erased_serde::Error), + Serde(erased_serde::Error), /// The data provider encountered some other error when loading the resource, such as I/O. #[displaydoc("Failed to load resource: {0}")] - Resource(#[from] Box), + Resource(Box), +} + +impl From for Error { + fn from(e: erased_serde::Error) -> Self { + Error::Serde(e) + } +} + +impl From> for Error { + fn from(e: Box) -> Self { + Error::Resource(e) + } } impl Error { diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index 8626bfa7094..11c983e39d7 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -16,17 +16,35 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc(transparent)] - Json(#[from] serde_json::error::Error), + Json(serde_json::error::Error), #[cfg(feature = "bincode")] #[displaydoc(transparent)] - Bincode(#[from] bincode::Error), + Bincode(bincode::Error), #[displaydoc(transparent)] - DataProvider(#[from] DataError), + DataProvider(DataError), #[allow(dead_code)] #[displaydoc("Unknown syntax: {0:?}")] UnknownSyntax(SyntaxOption), } +impl From for Error { + fn from(e: serde_json::error::Error) -> Self { + Error::Json(e) + } +} + +impl From for Error { + fn from(e: bincode::Error) -> Self { + Error::Bincode(e) + } +} + +impl From for Error { + fn from(e: DataError) -> Self { + Error::DataProvider(e) + } +} + impl Error { pub fn into_resource_error>(self, path: P) -> DataError { use crate::error::Error as CrateError; diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index d522ca63480..cb43da35a87 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -11,7 +11,7 @@ pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] std::io::Error, Option), #[displaydoc(transparent)] - DataProvider(#[from] icu_provider::DataError), + DataProvider(icu_provider::DataError), #[displaydoc("Deserializer error: {0}: {1:?}")] Deserializer( #[source] Box, @@ -24,6 +24,12 @@ pub enum Error { UnknownSyntax(SyntaxOption), } +impl From for Error { + fn from(e: icu_provider::DataError) -> Self { + Error::DataProvider(e) + } +} + /// To help with debugging, I/O errors should be paired with a file path. /// If a path is unavailable, create the error directly: [`Error::Io`]`(err, `[`None`]`)` impl> From<(std::io::Error, P)> for Error { diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index 562a9de82f6..b5837b9e43c 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -16,11 +16,22 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc(transparent)] - Io(#[from] io::Error), + Io(io::Error), #[displaydoc(transparent)] - Serializer(#[from] erased_serde::Error), + Serializer(erased_serde::Error), } +impl From for Error { + fn from(e: io::Error) -> Self { + Error::Io(e) + } +} + +impl From for Error { + fn from(e: erased_serde::Error) -> Self { + Error::Serializer(e) + } +} /// A simple serializer trait that works on whole objects. pub trait AbstractSerializer: Deref { /// Serializes an object to a sink. diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index f135882856f..93db1a551da 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -10,15 +10,27 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc("Cargo Error: {0}")] - Cargo(#[from] cargo_metadata::Error), + Cargo(cargo_metadata::Error), #[displaydoc("Serde Error: {0}")] - SerdeJson(#[from] serde_json::Error), + SerdeJson(serde_json::Error), #[displaydoc("{0}: package not found", env!("CARGO_PKG_NAME"))] PackageNotFound, #[displaydoc("package.metadata.icu4x_testdata not found")] MetadataNotFound, } +impl From for Error { + fn from(e: cargo_metadata::Error) -> Self { + Error::Cargo(e) + } +} + +impl From for Error { + fn from(e: serde_json::Error) -> Self { + Error::SerdeJson(e) + } +} + #[derive(Debug, Deserialize)] pub struct PackageMetadata { pub locales: Vec, From 90f66a4367ec8b8e8751280945be62c924a0fab8 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 11:37:56 -0700 Subject: [PATCH 06/15] #[displaydoc(transparent) -> #[displaydoc("{0}")] --- components/datetime/src/date.rs | 2 +- components/datetime/src/error.rs | 8 ++++---- components/datetime/src/skeleton.rs | 2 +- components/uniset/src/lib.rs | 2 +- experimental/provider_ppucd/src/error.rs | 2 +- provider/cldr/src/download/error.rs | 2 +- provider/cldr/src/error.rs | 4 ++-- provider/fs/src/deserializer.rs | 6 +++--- provider/fs/src/error.rs | 2 +- provider/fs/src/export/serializers/mod.rs | 4 ++-- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index 5ec98ede283..ec016c1716f 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -11,7 +11,7 @@ use tinystr::TinyStr8; #[derive(Display, Debug)] pub enum DateTimeError { - #[displaydoc(transparent)] + #[displaydoc("{0}")] Parse(std::num::ParseIntError), #[displaydoc("{field} must be between 0-{max}")] Overflow { field: &'static str, max: usize }, diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index ba651f59070..0d9c5854fbb 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -12,20 +12,20 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum DateTimeFormatError { /// An error originating from parsing a pattern. - #[displaydoc(transparent)] + #[displaydoc("{0}")] Pattern(pattern::Error), /// An error originating from the [`Write`](std::fmt::Write) trait. - #[displaydoc(transparent)] + #[displaydoc("{0}")] Format(std::fmt::Error), /// An error originating inside of the [`DataProvider`](icu_provider::DataProvider). - #[displaydoc(transparent)] + #[displaydoc("{0}")] DataProvider(DataError), /// An error originating from a missing field in datetime input. /// TODO: How can we return which field was missing? #[displaydoc("Missing input field")] MissingInputField, /// An error originating from skeleton matching. - #[displaydoc(transparent)] + #[displaydoc("{0}")] Skeleton(SkeletonError), /// An error originating from an unsupported field in a datetime format. #[displaydoc("Unsupported field: {0:?}")] diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index aa8d4efcdb5..fafa4b2df30 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -234,7 +234,7 @@ pub enum SkeletonError { SymbolUnimplemented(char), #[displaydoc("unimplemented field {0} in skeleton")] UnimplementedField(char), - #[displaydoc(transparent)] + #[displaydoc("{0}")] Fields(fields::Error), } diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index 0f4175e049e..c348a29cda8 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -72,7 +72,7 @@ pub enum UnicodeSetError { InvalidSet(Vec), #[displaydoc("Invalid range: {0}..{1}")] InvalidRange(u32, u32), - #[displaydoc(transparent)] + #[displaydoc("{0}")] PropDataLoad(DataError), } diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index dba2409db79..6050667e5fd 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -6,7 +6,7 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { - #[displaydoc(transparent)] + #[displaydoc("{0}")] PpucdParse(PpucdParseError), } diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index 4cebf782f6a..b1b3137e22a 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -10,7 +10,7 @@ use displaydoc::Display; pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] io::Error, Option), - #[displaydoc(transparent)] + #[displaydoc("{0}")] Reqwest(reqwest::Error), #[displaydoc("HTTP request failed: {0}: {1}")] HttpStatus(reqwest::StatusCode, String), diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index 6b91a11d74e..0504c4d07ad 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -18,10 +18,10 @@ pub enum Error { Json(#[source] serde_json::error::Error, Option), #[displaydoc("{0}: {1:?}")] Custom(String, Option), - #[displaydoc(transparent)] + #[displaydoc("{0}")] MissingSource(MissingSourceError), #[cfg(feature = "download")] - #[displaydoc(transparent)] + #[displaydoc("{0}")] Download(download::Error), #[displaydoc("poisoned lock on CLDR provider")] Poison, diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index 11c983e39d7..f9dfa8b48ff 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -15,12 +15,12 @@ use displaydoc::Display; /// An Error type specifically for the [`Deserializer`](serde::Deserializer) that doesn't carry filenames #[derive(Display, Debug)] pub enum Error { - #[displaydoc(transparent)] + #[displaydoc("{0}")] Json(serde_json::error::Error), #[cfg(feature = "bincode")] - #[displaydoc(transparent)] + #[displaydoc("{0}")] Bincode(bincode::Error), - #[displaydoc(transparent)] + #[displaydoc("{0}")] DataProvider(DataError), #[allow(dead_code)] #[displaydoc("Unknown syntax: {0:?}")] diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index cb43da35a87..7c2782d6703 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -10,7 +10,7 @@ use displaydoc::Display; pub enum Error { #[displaydoc("{0}: {1:?}")] Io(#[source] std::io::Error, Option), - #[displaydoc(transparent)] + #[displaydoc("{0}")] DataProvider(icu_provider::DataError), #[displaydoc("Deserializer error: {0}: {1:?}")] Deserializer( diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index b5837b9e43c..030bd510134 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -15,9 +15,9 @@ use displaydoc::Display; /// An Error type specifically for the [`Serializer`](serde::Serializer) that doesn't carry filenames #[derive(Display, Debug)] pub enum Error { - #[displaydoc(transparent)] + #[displaydoc("{0}")] Io(io::Error), - #[displaydoc(transparent)] + #[displaydoc("{0}")] Serializer(erased_serde::Error), } From dd3f3438e8f2a06ace9203590db4c26c776895da Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 11:40:10 -0700 Subject: [PATCH 07/15] Remove #[source] --- provider/cldr/src/download/error.rs | 2 +- provider/cldr/src/error.rs | 4 ++-- provider/fs/src/error.rs | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index b1b3137e22a..05cc8ec92be 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -9,7 +9,7 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc("{0}: {1:?}")] - Io(#[source] io::Error, Option), + Io(io::Error, Option), #[displaydoc("{0}")] Reqwest(reqwest::Error), #[displaydoc("HTTP request failed: {0}: {1}")] diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index 0504c4d07ad..f8e4ea1360a 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -13,9 +13,9 @@ use crate::download; #[derive(Display, Debug)] pub enum Error { #[displaydoc("{0}: {1:?}")] - Io(#[source] std::io::Error, Option), + Io(std::io::Error, Option), #[displaydoc("JSON error: {0}: {1:?}")] - Json(#[source] serde_json::error::Error, Option), + Json(serde_json::error::Error, Option), #[displaydoc("{0}: {1:?}")] Custom(String, Option), #[displaydoc("{0}")] diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index 7c2782d6703..11a56a7518b 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -9,17 +9,17 @@ use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { #[displaydoc("{0}: {1:?}")] - Io(#[source] std::io::Error, Option), + Io(std::io::Error, Option), #[displaydoc("{0}")] DataProvider(icu_provider::DataError), #[displaydoc("Deserializer error: {0}: {1:?}")] Deserializer( - #[source] Box, + Box, Option, ), #[cfg(feature = "export")] #[displaydoc("Serializer error: {0}: {1:?}")] - Serializer(#[source] erased_serde::Error, Option), + Serializer(erased_serde::Error, Option), #[displaydoc("Unknown syntax {0:?}. Do you need to enable a feature?")] UnknownSyntax(SyntaxOption), } From d7ccfb729544de36714e3767aace83a02f28b3b0 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 14:09:36 -0700 Subject: [PATCH 08/15] Add explicit Error impls Run `find . -name *.rs | xargs -I{} gawk -f replace.awk -i inplace {}` with ```awk BEGIN { a = 0; enum = "" } /#\[derive\(Display/ { a = 1 } match($0, /enum ([a-zA-Z]+)/, arr) { enum = arr[1] } { print } /^}/ && a == 1 { print "\nimpl std::error::Error for " enum " {}\n" a = 0 } ``` --- components/datetime/src/date.rs | 3 +++ components/datetime/src/error.rs | 3 +++ components/datetime/src/fields/length.rs | 3 +++ components/datetime/src/fields/mod.rs | 3 +++ components/datetime/src/fields/symbols.rs | 3 +++ components/datetime/src/pattern/error.rs | 3 +++ components/datetime/src/skeleton.rs | 3 +++ components/decimal/src/error.rs | 5 ++++- components/locid/src/parser/errors.rs | 3 +++ components/plurals/src/error.rs | 5 ++++- components/plurals/src/operands.rs | 3 +++ components/plurals/src/rules/lexer.rs | 3 +++ components/plurals/src/rules/parser.rs | 3 +++ components/uniset/src/lib.rs | 3 +++ experimental/provider_ppucd/src/error.rs | 6 ++++++ provider/cldr/src/download/error.rs | 3 +++ provider/cldr/src/error.rs | 6 ++++++ provider/cldr/src/transform/numbers/decimal_pattern.rs | 3 +++ provider/core/src/error.rs | 3 +++ provider/fs/src/deserializer.rs | 3 +++ provider/fs/src/error.rs | 3 +++ provider/fs/src/export/serializers/mod.rs | 3 +++ provider/testdata/src/metadata.rs | 3 +++ utils/fixed_decimal/src/lib.rs | 3 +++ utils/pattern/src/interpolator/error.rs | 3 +++ utils/pattern/src/parser/error.rs | 3 +++ utils/pattern/src/pattern/error.rs | 3 +++ 27 files changed, 89 insertions(+), 2 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index ec016c1716f..e3fef31edbd 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -21,6 +21,9 @@ pub enum DateTimeError { InvalidTimeZoneOffset, } +impl std::error::Error for DateTimeError {} + + impl From for Error { fn from(e: std::num::ParseIntError) -> Self { Error::Parse(e) diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index 0d9c5854fbb..5df4c135327 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -32,6 +32,9 @@ pub enum DateTimeFormatError { UnsupportedField(FieldSymbol), } +impl std::error::Error for DateTimeFormatError {} + + impl From for DateTimeFormatError { fn from(e: pattern::Error) -> Self { DateTimeFormatError::Pattern(e) diff --git a/components/datetime/src/fields/length.rs b/components/datetime/src/fields/length.rs index 83e52c18a1b..f11db5ae9e8 100644 --- a/components/datetime/src/fields/length.rs +++ b/components/datetime/src/fields/length.rs @@ -14,6 +14,9 @@ pub enum LengthError { InvalidLength, } +impl std::error::Error for LengthError {} + + #[derive(Debug, Eq, PartialEq, Clone, Copy, Ord, PartialOrd)] #[cfg_attr( feature = "provider_serde", diff --git a/components/datetime/src/fields/mod.rs b/components/datetime/src/fields/mod.rs index 272a18ac00d..c932c75bbc5 100644 --- a/components/datetime/src/fields/mod.rs +++ b/components/datetime/src/fields/mod.rs @@ -20,6 +20,9 @@ pub enum Error { InvalidLength(FieldSymbol), } +impl std::error::Error for Error {} + + #[derive(Debug, Eq, PartialEq, Clone, Copy, Ord, PartialOrd)] #[cfg_attr( feature = "provider_serde", diff --git a/components/datetime/src/fields/symbols.rs b/components/datetime/src/fields/symbols.rs index d32860df4ae..d91925e97fc 100644 --- a/components/datetime/src/fields/symbols.rs +++ b/components/datetime/src/fields/symbols.rs @@ -16,6 +16,9 @@ pub enum SymbolError { Invalid(char), } +impl std::error::Error for SymbolError {} + + #[derive(Debug, Eq, PartialEq, Clone, Copy)] #[cfg_attr( feature = "provider_serde", diff --git a/components/datetime/src/pattern/error.rs b/components/datetime/src/pattern/error.rs index 4b01e8f2850..33d0034a50a 100644 --- a/components/datetime/src/pattern/error.rs +++ b/components/datetime/src/pattern/error.rs @@ -22,6 +22,9 @@ pub enum Error { UnclosedPlaceholder, } +impl std::error::Error for Error {} + + impl From for Error { fn from(input: fields::Error) -> Self { match input { diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index fafa4b2df30..ee1d7e7f6a8 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -238,6 +238,9 @@ pub enum SkeletonError { Fields(fields::Error), } +impl std::error::Error for SkeletonError {} + + impl From for SkeletonError { fn from(e: fields::Error) -> Self { SkeletonError::Fields(e) diff --git a/components/decimal/src/error.rs b/components/decimal/src/error.rs index d303aa4d70b..ea3dec0a97d 100644 --- a/components/decimal/src/error.rs +++ b/components/decimal/src/error.rs @@ -12,8 +12,11 @@ pub enum Error { Data(icu_provider::DataError), } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: icu_provider::DataError) -> Self { Error::Data(e) } -} \ No newline at end of file +} diff --git a/components/locid/src/parser/errors.rs b/components/locid/src/parser/errors.rs index b2a8b10075e..8d168def3db 100644 --- a/components/locid/src/parser/errors.rs +++ b/components/locid/src/parser/errors.rs @@ -54,3 +54,6 @@ pub enum ParserError { #[displaydoc("Invalid extension")] InvalidExtension, } + +impl std::error::Error for ParserError {} + diff --git a/components/plurals/src/error.rs b/components/plurals/src/error.rs index c9ceed98139..4f9f89436be 100644 --- a/components/plurals/src/error.rs +++ b/components/plurals/src/error.rs @@ -17,6 +17,9 @@ pub enum PluralRulesError { DataProvider(DataError), } +impl std::error::Error for PluralRulesError {} + + impl From for PluralRulesError { fn from(e: ParserError) -> Self { PluralRulesError::Parser(e) @@ -27,4 +30,4 @@ impl From for PluralRulesError { fn from(e: DataError) -> Self { PluralRulesError::DataProvider(e) } -} \ No newline at end of file +} diff --git a/components/plurals/src/operands.rs b/components/plurals/src/operands.rs index 97a317ba948..b5c2ff5c164 100644 --- a/components/plurals/src/operands.rs +++ b/components/plurals/src/operands.rs @@ -96,6 +96,9 @@ pub enum OperandsError { Invalid, } +impl std::error::Error for OperandsError {} + + impl From for OperandsError { fn from(_: ParseIntError) -> Self { Self::Invalid diff --git a/components/plurals/src/rules/lexer.rs b/components/plurals/src/rules/lexer.rs index 85435a01d87..bc3a639bf48 100644 --- a/components/plurals/src/rules/lexer.rs +++ b/components/plurals/src/rules/lexer.rs @@ -34,6 +34,9 @@ pub enum LexerError { UnknownToken(u8), } +impl std::error::Error for LexerError {} + + /// Unicode Plural Rule lexer is an iterator /// over tokens produced from an input string. /// diff --git a/components/plurals/src/rules/parser.rs b/components/plurals/src/rules/parser.rs index eb1ba8ce546..bfee7927902 100644 --- a/components/plurals/src/rules/parser.rs +++ b/components/plurals/src/rules/parser.rs @@ -23,6 +23,9 @@ pub enum ParserError { ExpectedSampleType, } +impl std::error::Error for ParserError {} + + /// Unicode Plural Rule parser converts an /// input string into a Rule [`AST`]. /// diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index c348a29cda8..2dd355aec76 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -76,6 +76,9 @@ pub enum UnicodeSetError { PropDataLoad(DataError), } +impl std::error::Error for UnicodeSetError {} + + impl From for UnicodeSetError { fn from(e: DataError) -> Self { UnicodeSetError::PropDataLoad(e) diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index 6050667e5fd..ecb998e3419 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -10,12 +10,18 @@ pub enum Error { PpucdParse(PpucdParseError), } +impl std::error::Error for Error {} + + #[derive(Display, Debug, PartialEq, Copy, Clone)] #[displaydoc("Could not parse PPUCD file: {src}")] pub struct PpucdParseError { pub src: &'static str, } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: PpucdParseError) -> Self { Error::PpucdParse(e) diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index 05cc8ec92be..4c04d0605a5 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -18,6 +18,9 @@ pub enum Error { NoCacheDir, } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: reqwest::Error) -> Self { Error::Reqwest(e) diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index f8e4ea1360a..7798fb14352 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -27,6 +27,9 @@ pub enum Error { Poison, } +impl std::error::Error for Error {} + + #[cfg(feature = "download")] impl From for Error { fn from(err: download::Error) -> Error { @@ -43,6 +46,9 @@ pub struct MissingSourceError { pub src: &'static str, } +impl std::error::Error for Error {} + + /// To help with debugging, I/O errors should be paired with a file path. /// If a path is unavailable, create the error directly: [`Error::Io`]`(err, `[`None`]`)` impl> From<(std::io::Error, P)> for Error { diff --git a/provider/cldr/src/transform/numbers/decimal_pattern.rs b/provider/cldr/src/transform/numbers/decimal_pattern.rs index fda6912b681..8e9e1961479 100644 --- a/provider/cldr/src/transform/numbers/decimal_pattern.rs +++ b/provider/cldr/src/transform/numbers/decimal_pattern.rs @@ -20,6 +20,9 @@ pub enum Error { UnknownPatternBody(String), } +impl std::error::Error for Error {} + + /// Representation of a UTS-35 number subpattern (part of a number pattern between ';'s). #[derive(Debug, PartialEq)] pub struct DecimalSubPattern { diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index eb9427afe70..5d0763f3a2d 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -60,6 +60,9 @@ pub enum Error { Resource(Box), } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: erased_serde::Error) -> Self { Error::Serde(e) diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index f9dfa8b48ff..b5958a73cec 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -27,6 +27,9 @@ pub enum Error { UnknownSyntax(SyntaxOption), } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: serde_json::error::Error) -> Self { Error::Json(e) diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index 11a56a7518b..0b63e7b59b3 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -24,6 +24,9 @@ pub enum Error { UnknownSyntax(SyntaxOption), } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: icu_provider::DataError) -> Self { Error::DataProvider(e) diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index 030bd510134..5d99f7b74e4 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -21,6 +21,9 @@ pub enum Error { Serializer(erased_serde::Error), } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: io::Error) -> Self { Error::Io(e) diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index 93db1a551da..4c4f53eb66d 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -19,6 +19,9 @@ pub enum Error { MetadataNotFound, } +impl std::error::Error for Error {} + + impl From for Error { fn from(e: cargo_metadata::Error) -> Self { Error::Cargo(e) diff --git a/utils/fixed_decimal/src/lib.rs b/utils/fixed_decimal/src/lib.rs index 528a1ccf6a7..19a6b9c158e 100644 --- a/utils/fixed_decimal/src/lib.rs +++ b/utils/fixed_decimal/src/lib.rs @@ -73,3 +73,6 @@ pub enum Error { #[displaydoc("Failed to parse the input string")] Syntax, } + +impl std::error::Error for Error {} + diff --git a/utils/pattern/src/interpolator/error.rs b/utils/pattern/src/interpolator/error.rs index 6ac68942e14..ca0795d5bd9 100644 --- a/utils/pattern/src/interpolator/error.rs +++ b/utils/pattern/src/interpolator/error.rs @@ -25,3 +25,6 @@ where #[displaydoc("Unclosed quoted literal")] UnclosedQuotedLiteral, } + +impl std::error::Error for InterpolatorError {} + diff --git a/utils/pattern/src/parser/error.rs b/utils/pattern/src/parser/error.rs index 32d551e1246..68b2c0f7621 100644 --- a/utils/pattern/src/parser/error.rs +++ b/utils/pattern/src/parser/error.rs @@ -43,3 +43,6 @@ where #[displaydoc("Unclosed quoted literal")] UnclosedQuotedLiteral, } + +impl std::error::Error for ParserError {} + diff --git a/utils/pattern/src/pattern/error.rs b/utils/pattern/src/pattern/error.rs index d8451420147..aa6a41a5e62 100644 --- a/utils/pattern/src/pattern/error.rs +++ b/utils/pattern/src/pattern/error.rs @@ -23,6 +23,9 @@ where Format(std::fmt::Error), } +impl std::error::Error for PatternError {} + + impl From> for PatternError where K: Debug + FromStr + PartialEq, From 8373bc4a822cf63ce1b9a0b47af08408ede90f0e Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 14:11:39 -0700 Subject: [PATCH 09/15] Fix generic Error impls --- utils/pattern/src/interpolator/error.rs | 10 +++++++--- utils/pattern/src/parser/error.rs | 5 ++--- utils/pattern/src/pattern/error.rs | 10 +++++++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/utils/pattern/src/interpolator/error.rs b/utils/pattern/src/interpolator/error.rs index ca0795d5bd9..14b817b1092 100644 --- a/utils/pattern/src/interpolator/error.rs +++ b/utils/pattern/src/interpolator/error.rs @@ -2,8 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use std::{fmt::Debug, str::FromStr}; use displaydoc::Display; +use std::{fmt::Debug, str::FromStr}; /// An error returned when interpolating a pattern. /// @@ -26,5 +26,9 @@ where UnclosedQuotedLiteral, } -impl std::error::Error for InterpolatorError {} - +impl std::error::Error for InterpolatorError +where + K: Debug + FromStr + PartialEq, + K::Err: Debug + PartialEq, +{ +} diff --git a/utils/pattern/src/parser/error.rs b/utils/pattern/src/parser/error.rs index 68b2c0f7621..8af49a050c3 100644 --- a/utils/pattern/src/parser/error.rs +++ b/utils/pattern/src/parser/error.rs @@ -2,8 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use std::fmt::Debug; use displaydoc::Display; +use std::fmt::Debug; /// An error returned when parsing a pattern. /// @@ -44,5 +44,4 @@ where UnclosedQuotedLiteral, } -impl std::error::Error for ParserError {} - +impl std::error::Error for ParserError {} diff --git a/utils/pattern/src/pattern/error.rs b/utils/pattern/src/pattern/error.rs index aa6a41a5e62..68dd568cf8b 100644 --- a/utils/pattern/src/pattern/error.rs +++ b/utils/pattern/src/pattern/error.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::interpolator::InterpolatorError; -use std::{fmt::Debug, str::FromStr}; use displaydoc::Display; +use std::{fmt::Debug, str::FromStr}; /// An error returned from a pattern. /// @@ -23,8 +23,12 @@ where Format(std::fmt::Error), } -impl std::error::Error for PatternError {} - +impl std::error::Error for PatternError +where + K: Debug + FromStr + PartialEq, + K::Err: Debug + PartialEq, +{ +} impl From> for PatternError where From 95b0f63cc9b73c7f6eb71a03062f0e0330a9cd95 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 14:13:36 -0700 Subject: [PATCH 10/15] Fix displaydoc panic --- provider/testdata/src/metadata.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index 4c4f53eb66d..ee19cf5b6d7 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -13,7 +13,7 @@ pub enum Error { Cargo(cargo_metadata::Error), #[displaydoc("Serde Error: {0}")] SerdeJson(serde_json::Error), - #[displaydoc("{0}: package not found", env!("CARGO_PKG_NAME"))] + #[displaydoc("Package not found")] PackageNotFound, #[displaydoc("package.metadata.icu4x_testdata not found")] MetadataNotFound, From b653464fab5b7e310b30a142c9250bdaa4f80487 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 14:14:01 -0700 Subject: [PATCH 11/15] struct not enum --- experimental/provider_ppucd/src/error.rs | 2 +- provider/cldr/src/error.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index ecb998e3419..256dff3aa71 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -19,7 +19,7 @@ pub struct PpucdParseError { pub src: &'static str, } -impl std::error::Error for Error {} +impl std::error::Error for PpucdParseError {} impl From for Error { diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index 7798fb14352..160a625c4d6 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -46,7 +46,7 @@ pub struct MissingSourceError { pub src: &'static str, } -impl std::error::Error for Error {} +impl std::error::Error for MissingSourceError {} /// To help with debugging, I/O errors should be paired with a file path. From df09214c6e8e2ae75a933be57a785cfb779c0098 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 14:14:36 -0700 Subject: [PATCH 12/15] Fixup from impl --- components/datetime/src/date.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index e3fef31edbd..f86d0dd2466 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -24,9 +24,9 @@ pub enum DateTimeError { impl std::error::Error for DateTimeError {} -impl From for Error { +impl From for DateTimeError { fn from(e: std::num::ParseIntError) -> Self { - Error::Parse(e) + DateTimeError::Parse(e) } } From 54f87fa1bb853d809ca270660045d9118ae7ef66 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 14:24:19 -0700 Subject: [PATCH 13/15] rustfmt --- components/datetime/src/date.rs | 3 +-- components/datetime/src/error.rs | 3 +-- components/datetime/src/fields/length.rs | 3 +-- components/datetime/src/fields/mod.rs | 3 +-- components/datetime/src/fields/symbols.rs | 3 +-- components/datetime/src/pattern/error.rs | 1 - components/datetime/src/skeleton.rs | 3 +-- components/decimal/src/error.rs | 1 - components/locid/src/parser/errors.rs | 1 - components/plurals/src/error.rs | 3 +-- components/plurals/src/operands.rs | 3 +-- components/plurals/src/rules/lexer.rs | 1 - components/plurals/src/rules/parser.rs | 3 +-- components/uniset/src/lib.rs | 3 +-- experimental/provider_ppucd/src/error.rs | 2 -- provider/cldr/src/download/error.rs | 3 +-- provider/cldr/src/error.rs | 4 +--- provider/cldr/src/transform/numbers/decimal_pattern.rs | 3 +-- provider/core/src/error.rs | 3 +-- provider/fs/src/deserializer.rs | 3 +-- provider/fs/src/error.rs | 8 ++------ provider/fs/src/export/serializers/mod.rs | 3 +-- provider/testdata/src/metadata.rs | 3 +-- utils/fixed_decimal/src/lib.rs | 3 +-- 24 files changed, 20 insertions(+), 49 deletions(-) diff --git a/components/datetime/src/date.rs b/components/datetime/src/date.rs index f86d0dd2466..17cb6bd1161 100644 --- a/components/datetime/src/date.rs +++ b/components/datetime/src/date.rs @@ -2,11 +2,11 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use displaydoc::Display; use icu_locid::Locale; use std::convert::TryFrom; use std::ops::{Add, Sub}; use std::str::FromStr; -use displaydoc::Display; use tinystr::TinyStr8; #[derive(Display, Debug)] @@ -23,7 +23,6 @@ pub enum DateTimeError { impl std::error::Error for DateTimeError {} - impl From for DateTimeError { fn from(e: std::num::ParseIntError) -> Self { DateTimeError::Parse(e) diff --git a/components/datetime/src/error.rs b/components/datetime/src/error.rs index 5df4c135327..2c5b871d99b 100644 --- a/components/datetime/src/error.rs +++ b/components/datetime/src/error.rs @@ -5,8 +5,8 @@ use crate::fields::FieldSymbol; use crate::pattern; use crate::skeleton::SkeletonError; -use icu_provider::prelude::DataError; use displaydoc::Display; +use icu_provider::prelude::DataError; /// A list of possible error outcomes for the [`DateTimeFormat`](crate::DateTimeFormat) struct. #[derive(Display, Debug)] @@ -34,7 +34,6 @@ pub enum DateTimeFormatError { impl std::error::Error for DateTimeFormatError {} - impl From for DateTimeFormatError { fn from(e: pattern::Error) -> Self { DateTimeFormatError::Pattern(e) diff --git a/components/datetime/src/fields/length.rs b/components/datetime/src/fields/length.rs index f11db5ae9e8..d76e3cc37ad 100644 --- a/components/datetime/src/fields/length.rs +++ b/components/datetime/src/fields/length.rs @@ -2,11 +2,11 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use displaydoc::Display; use std::{ cmp::{Ord, PartialOrd}, convert::TryFrom, }; -use displaydoc::Display; #[derive(Display, Debug, PartialEq)] pub enum LengthError { @@ -16,7 +16,6 @@ pub enum LengthError { impl std::error::Error for LengthError {} - #[derive(Debug, Eq, PartialEq, Clone, Copy, Ord, PartialOrd)] #[cfg_attr( feature = "provider_serde", diff --git a/components/datetime/src/fields/mod.rs b/components/datetime/src/fields/mod.rs index c932c75bbc5..37af4d7490c 100644 --- a/components/datetime/src/fields/mod.rs +++ b/components/datetime/src/fields/mod.rs @@ -5,9 +5,9 @@ mod length; pub(crate) mod symbols; +use displaydoc::Display; pub use length::{FieldLength, LengthError}; pub use symbols::*; -use displaydoc::Display; use std::{ cmp::{Ord, PartialOrd}, @@ -22,7 +22,6 @@ pub enum Error { impl std::error::Error for Error {} - #[derive(Debug, Eq, PartialEq, Clone, Copy, Ord, PartialOrd)] #[cfg_attr( feature = "provider_serde", diff --git a/components/datetime/src/fields/symbols.rs b/components/datetime/src/fields/symbols.rs index d91925e97fc..7d44527f620 100644 --- a/components/datetime/src/fields/symbols.rs +++ b/components/datetime/src/fields/symbols.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::fields::FieldLength; -use std::{cmp::Ordering, convert::TryFrom}; use displaydoc::Display; +use std::{cmp::Ordering, convert::TryFrom}; #[derive(Display, Debug, PartialEq)] pub enum SymbolError { @@ -18,7 +18,6 @@ pub enum SymbolError { impl std::error::Error for SymbolError {} - #[derive(Debug, Eq, PartialEq, Clone, Copy)] #[cfg_attr( feature = "provider_serde", diff --git a/components/datetime/src/pattern/error.rs b/components/datetime/src/pattern/error.rs index 33d0034a50a..ef161bb6b26 100644 --- a/components/datetime/src/pattern/error.rs +++ b/components/datetime/src/pattern/error.rs @@ -24,7 +24,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(input: fields::Error) -> Self { match input { diff --git a/components/datetime/src/skeleton.rs b/components/datetime/src/skeleton.rs index ee1d7e7f6a8..f711d6d812c 100644 --- a/components/datetime/src/skeleton.rs +++ b/components/datetime/src/skeleton.rs @@ -4,9 +4,9 @@ //! Skeletons are used for pattern matching. See the [`Skeleton`] struct for more information. +use displaydoc::Display; use smallvec::SmallVec; use std::convert::TryFrom; -use displaydoc::Display; use crate::{ fields::{self, Field, FieldLength, FieldSymbol}, @@ -240,7 +240,6 @@ pub enum SkeletonError { impl std::error::Error for SkeletonError {} - impl From for SkeletonError { fn from(e: fields::Error) -> Self { SkeletonError::Fields(e) diff --git a/components/decimal/src/error.rs b/components/decimal/src/error.rs index ea3dec0a97d..c1eaf8066d1 100644 --- a/components/decimal/src/error.rs +++ b/components/decimal/src/error.rs @@ -14,7 +14,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: icu_provider::DataError) -> Self { Error::Data(e) diff --git a/components/locid/src/parser/errors.rs b/components/locid/src/parser/errors.rs index 8d168def3db..ff2a8969b1f 100644 --- a/components/locid/src/parser/errors.rs +++ b/components/locid/src/parser/errors.rs @@ -56,4 +56,3 @@ pub enum ParserError { } impl std::error::Error for ParserError {} - diff --git a/components/plurals/src/error.rs b/components/plurals/src/error.rs index 4f9f89436be..5ace4bc1ee0 100644 --- a/components/plurals/src/error.rs +++ b/components/plurals/src/error.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::rules::parser::ParserError; -use icu_provider::prelude::DataError; use displaydoc::Display; +use icu_provider::prelude::DataError; /// A list of possible error outcomes for the [`PluralRules`](crate::PluralRules) struct. /// @@ -19,7 +19,6 @@ pub enum PluralRulesError { impl std::error::Error for PluralRulesError {} - impl From for PluralRulesError { fn from(e: ParserError) -> Self { PluralRulesError::Parser(e) diff --git a/components/plurals/src/operands.rs b/components/plurals/src/operands.rs index b5c2ff5c164..b9dc92dcc90 100644 --- a/components/plurals/src/operands.rs +++ b/components/plurals/src/operands.rs @@ -2,13 +2,13 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use displaydoc::Display; use fixed_decimal::FixedDecimal; use std::convert::TryFrom; use std::io::Error as IOError; use std::isize; use std::num::ParseIntError; use std::str::FromStr; -use displaydoc::Display; /// A full plural operands representation of a number. See [CLDR Plural Rules](http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules) for complete operands description. /// Plural operands in compliance with [CLDR Plural Rules](http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules). @@ -98,7 +98,6 @@ pub enum OperandsError { impl std::error::Error for OperandsError {} - impl From for OperandsError { fn from(_: ParseIntError) -> Self { Self::Invalid diff --git a/components/plurals/src/rules/lexer.rs b/components/plurals/src/rules/lexer.rs index bc3a639bf48..4277cf5b11a 100644 --- a/components/plurals/src/rules/lexer.rs +++ b/components/plurals/src/rules/lexer.rs @@ -36,7 +36,6 @@ pub enum LexerError { impl std::error::Error for LexerError {} - /// Unicode Plural Rule lexer is an iterator /// over tokens produced from an input string. /// diff --git a/components/plurals/src/rules/parser.rs b/components/plurals/src/rules/parser.rs index bfee7927902..9c29b95432a 100644 --- a/components/plurals/src/rules/parser.rs +++ b/components/plurals/src/rules/parser.rs @@ -4,8 +4,8 @@ use super::ast; use super::lexer::{Lexer, Token}; -use std::iter::Peekable; use displaydoc::Display; +use std::iter::Peekable; #[derive(Display, Debug, PartialEq, Eq)] pub enum ParserError { @@ -25,7 +25,6 @@ pub enum ParserError { impl std::error::Error for ParserError {} - /// Unicode Plural Rule parser converts an /// input string into a Rule [`AST`]. /// diff --git a/components/uniset/src/lib.rs b/components/uniset/src/lib.rs index 2dd355aec76..95d2e1dd001 100644 --- a/components/uniset/src/lib.rs +++ b/components/uniset/src/lib.rs @@ -60,8 +60,8 @@ mod utils; pub use builder::UnicodeSetBuilder; pub use conversions::*; -use icu_provider::DataError; use displaydoc::Display; +use icu_provider::DataError; pub use uniset::UnicodeSet; pub use utils::*; @@ -78,7 +78,6 @@ pub enum UnicodeSetError { impl std::error::Error for UnicodeSetError {} - impl From for UnicodeSetError { fn from(e: DataError) -> Self { UnicodeSetError::PropDataLoad(e) diff --git a/experimental/provider_ppucd/src/error.rs b/experimental/provider_ppucd/src/error.rs index 256dff3aa71..2b0c55b82b7 100644 --- a/experimental/provider_ppucd/src/error.rs +++ b/experimental/provider_ppucd/src/error.rs @@ -12,7 +12,6 @@ pub enum Error { impl std::error::Error for Error {} - #[derive(Display, Debug, PartialEq, Copy, Clone)] #[displaydoc("Could not parse PPUCD file: {src}")] pub struct PpucdParseError { @@ -21,7 +20,6 @@ pub struct PpucdParseError { impl std::error::Error for PpucdParseError {} - impl From for Error { fn from(e: PpucdParseError) -> Self { Error::PpucdParse(e) diff --git a/provider/cldr/src/download/error.rs b/provider/cldr/src/download/error.rs index 4c04d0605a5..608325ac3e3 100644 --- a/provider/cldr/src/download/error.rs +++ b/provider/cldr/src/download/error.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use displaydoc::Display; use std::io; use std::path::{Path, PathBuf}; -use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { @@ -20,7 +20,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: reqwest::Error) -> Self { Error::Reqwest(e) diff --git a/provider/cldr/src/error.rs b/provider/cldr/src/error.rs index 160a625c4d6..1de45c7c26e 100644 --- a/provider/cldr/src/error.rs +++ b/provider/cldr/src/error.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +use displaydoc::Display; use icu_locid::LanguageIdentifier; use std::path::{Path, PathBuf}; -use displaydoc::Display; #[cfg(feature = "download")] use crate::download; @@ -29,7 +29,6 @@ pub enum Error { impl std::error::Error for Error {} - #[cfg(feature = "download")] impl From for Error { fn from(err: download::Error) -> Error { @@ -48,7 +47,6 @@ pub struct MissingSourceError { impl std::error::Error for MissingSourceError {} - /// To help with debugging, I/O errors should be paired with a file path. /// If a path is unavailable, create the error directly: [`Error::Io`]`(err, `[`None`]`)` impl> From<(std::io::Error, P)> for Error { diff --git a/provider/cldr/src/transform/numbers/decimal_pattern.rs b/provider/cldr/src/transform/numbers/decimal_pattern.rs index 8e9e1961479..9aa31505255 100644 --- a/provider/cldr/src/transform/numbers/decimal_pattern.rs +++ b/provider/cldr/src/transform/numbers/decimal_pattern.rs @@ -6,11 +6,11 @@ //! //! Spec reference: https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns +use displaydoc::Display; use icu_decimal::provider::AffixesV1; use itertools::Itertools; use std::borrow::Cow; use std::str::FromStr; -use displaydoc::Display; #[derive(Display, Debug, PartialEq)] pub enum Error { @@ -22,7 +22,6 @@ pub enum Error { impl std::error::Error for Error {} - /// Representation of a UTS-35 number subpattern (part of a number pattern between ';'s). #[derive(Debug, PartialEq)] pub struct DecimalSubPattern { diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index 5d0763f3a2d..0ca541efe46 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::prelude::*; -use std::any::TypeId; use displaydoc::Display; +use std::any::TypeId; /// Error enumeration for DataProvider. #[non_exhaustive] @@ -62,7 +62,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: erased_serde::Error) -> Self { Error::Serde(e) diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index b5958a73cec..82d4176dae8 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -3,6 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::manifest::SyntaxOption; +use displaydoc::Display; use icu_provider::prelude::*; use icu_provider::serde::*; use icu_provider::yoke::trait_hack::YokeTraitHack; @@ -10,7 +11,6 @@ use icu_provider::yoke::Yokeable; use serde::Deserialize; use std::path::Path; use std::rc::Rc; -use displaydoc::Display; /// An Error type specifically for the [`Deserializer`](serde::Deserializer) that doesn't carry filenames #[derive(Display, Debug)] @@ -29,7 +29,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: serde_json::error::Error) -> Self { Error::Json(e) diff --git a/provider/fs/src/error.rs b/provider/fs/src/error.rs index 0b63e7b59b3..dbfd077fe32 100644 --- a/provider/fs/src/error.rs +++ b/provider/fs/src/error.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use crate::manifest::SyntaxOption; -use std::path::{Path, PathBuf}; use displaydoc::Display; +use std::path::{Path, PathBuf}; #[derive(Display, Debug)] pub enum Error { @@ -13,10 +13,7 @@ pub enum Error { #[displaydoc("{0}")] DataProvider(icu_provider::DataError), #[displaydoc("Deserializer error: {0}: {1:?}")] - Deserializer( - Box, - Option, - ), + Deserializer(Box, Option), #[cfg(feature = "export")] #[displaydoc("Serializer error: {0}: {1:?}")] Serializer(erased_serde::Error, Option), @@ -26,7 +23,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: icu_provider::DataError) -> Self { Error::DataProvider(e) diff --git a/provider/fs/src/export/serializers/mod.rs b/provider/fs/src/export/serializers/mod.rs index 5d99f7b74e4..5d1d44cdea1 100644 --- a/provider/fs/src/export/serializers/mod.rs +++ b/provider/fs/src/export/serializers/mod.rs @@ -8,9 +8,9 @@ pub mod json; pub mod bincode; use crate::manifest::SyntaxOption; +use displaydoc::Display; use std::io; use std::ops::Deref; -use displaydoc::Display; /// An Error type specifically for the [`Serializer`](serde::Serializer) that doesn't carry filenames #[derive(Display, Debug)] @@ -23,7 +23,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: io::Error) -> Self { Error::Io(e) diff --git a/provider/testdata/src/metadata.rs b/provider/testdata/src/metadata.rs index ee19cf5b6d7..0e469b1ce53 100644 --- a/provider/testdata/src/metadata.rs +++ b/provider/testdata/src/metadata.rs @@ -3,9 +3,9 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use cargo_metadata::{self, camino::Utf8PathBuf, MetadataCommand}; +use displaydoc::Display; use icu_locid::LanguageIdentifier; use serde::Deserialize; -use displaydoc::Display; #[derive(Display, Debug)] pub enum Error { @@ -21,7 +21,6 @@ pub enum Error { impl std::error::Error for Error {} - impl From for Error { fn from(e: cargo_metadata::Error) -> Self { Error::Cargo(e) diff --git a/utils/fixed_decimal/src/lib.rs b/utils/fixed_decimal/src/lib.rs index 19a6b9c158e..3e38da67b41 100644 --- a/utils/fixed_decimal/src/lib.rs +++ b/utils/fixed_decimal/src/lib.rs @@ -43,8 +43,8 @@ pub mod signum; mod uint_iterator; pub use decimal::FixedDecimal; -pub use signum::Signum; use displaydoc::Display; +pub use signum::Signum; #[derive(Display, Debug, PartialEq)] pub enum Error { @@ -75,4 +75,3 @@ pub enum Error { } impl std::error::Error for Error {} - From 89cd03b40bc90846a637630281c6103ffb082df1 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 16:16:13 -0700 Subject: [PATCH 14/15] fix cfg --- provider/fs/src/deserializer.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/provider/fs/src/deserializer.rs b/provider/fs/src/deserializer.rs index 82d4176dae8..db27905e60b 100644 --- a/provider/fs/src/deserializer.rs +++ b/provider/fs/src/deserializer.rs @@ -35,6 +35,7 @@ impl From for Error { } } +#[cfg(feature = "bincode")] impl From for Error { fn from(e: bincode::Error) -> Self { Error::Bincode(e) From 5fdfb6633c424089e9782d1ba84644277edb503c Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 16 Jul 2021 16:27:28 -0700 Subject: [PATCH 15/15] fix cfg --- provider/core/src/error.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/provider/core/src/error.rs b/provider/core/src/error.rs index 0ca541efe46..3669ea96d42 100644 --- a/provider/core/src/error.rs +++ b/provider/core/src/error.rs @@ -62,6 +62,7 @@ pub enum Error { impl std::error::Error for Error {} +#[cfg(feature = "erased-serde")] impl From for Error { fn from(e: erased_serde::Error) -> Self { Error::Serde(e)