Skip to content

Commit 7b0666a

Browse files
authored
Merge pull request #2503 from CosmWasm/co/classify-more-errors
Classify more errors
2 parents f3ad156 + 4b72645 commit 7b0666a

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

packages/std/src/coins.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ mod tests {
380380
assert_eq!(Coins::default().to_string(), "");
381381
assert_eq!(
382382
Coins::from_str(invalid).unwrap_err().to_string(),
383-
"kind: Other, error: Missing amount or non-digit characters in amount"
383+
"kind: Parsing, error: Missing amount or non-digit characters in amount"
384384
);
385385
}
386386

packages/std/src/errors/std_error.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ use std::{error::Error, ops::Deref, str, string};
44

55
use super::BT;
66

7-
use crate::errors::{RecoverPubkeyError, VerificationError};
7+
use crate::{
8+
errors::{RecoverPubkeyError, VerificationError},
9+
Decimal256RangeExceeded, DecimalRangeExceeded, SignedDecimal256RangeExceeded,
10+
SignedDecimalRangeExceeded,
11+
};
812

913
mod sealed {
1014
pub trait Sealed {}
@@ -122,9 +126,21 @@ where
122126
// "mom, can we have specialization?"
123127
// "we have specialization at home"
124128
// specialization at home:
125-
let kind = if inner.is::<str::Utf8Error>() || inner.is::<string::FromUtf8Error>() {
129+
let kind = if inner.is::<str::Utf8Error>()
130+
|| inner.is::<string::FromUtf8Error>()
131+
|| inner.is::<core::num::ParseIntError>()
132+
|| inner.is::<CoinFromStrError>()
133+
{
126134
ErrorKind::Parsing
127-
} else if inner.is::<ConversionOverflowError>() || inner.is::<OverflowError>() {
135+
} else if inner.is::<ConversionOverflowError>()
136+
|| inner.is::<OverflowError>()
137+
|| inner.is::<RoundUpOverflowError>()
138+
|| inner.is::<RoundDownOverflowError>()
139+
|| inner.is::<DecimalRangeExceeded>()
140+
|| inner.is::<Decimal256RangeExceeded>()
141+
|| inner.is::<SignedDecimalRangeExceeded>()
142+
|| inner.is::<SignedDecimal256RangeExceeded>()
143+
{
128144
ErrorKind::Overflow
129145
} else if inner.is::<serde_json::Error>()
130146
|| inner.is::<rmp_serde::encode::Error>()

packages/std/src/math/signed_decimal.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3081,7 +3081,7 @@ mod tests {
30813081

30823082
// invalid: not properly defined signed decimal value
30833083
assert_eq!(
3084-
"Error parsing decimal '1.e': kind: Other, error: invalid digit found in string at line 1 column 5",
3084+
"Error parsing decimal '1.e': kind: Parsing, error: invalid digit found in string at line 1 column 5",
30853085
serde_json::from_str::<SignedDecimal>(r#""1.e""#)
30863086
.err()
30873087
.unwrap()

packages/std/src/math/signed_decimal_256.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3243,7 +3243,7 @@ mod tests {
32433243

32443244
// invalid: not properly defined signed decimal value
32453245
assert_eq!(
3246-
"Error parsing decimal '1.e': kind: Other, error: invalid digit found in string at line 1 column 5",
3246+
"Error parsing decimal '1.e': kind: Parsing, error: invalid digit found in string at line 1 column 5",
32473247
serde_json::from_str::<SignedDecimal256>(r#""1.e""#)
32483248
.err()
32493249
.unwrap()

0 commit comments

Comments
 (0)