Skip to content

Commit 3cb24c8

Browse files
omerfirmakOppenfmoletta
authored andcommitted
Make felt_from_number report errors properly (lambdaclass#1012)
instead of returning Ok(None) in case of an error Co-authored-by: Mario Rugiero <[email protected]> Co-authored-by: fmoletta <[email protected]>
1 parent 5175661 commit 3cb24c8

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#### Upcoming Changes
44

5+
* fix: felt_from_number not properly returning parse errors [#1012](https://github.com/lambdaclass/cairo-rs/pull/1012)
56

67
* fix: Fix felt sqrt and Signed impl [#1150](https://github.com/lambdaclass/cairo-rs/pull/1150)
78

src/serde/deserialize_program.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,10 @@ where
169169
D: Deserializer<'de>,
170170
{
171171
let n = Number::deserialize(deserializer)?;
172-
Ok(Felt252::parse_bytes(n.to_string().as_bytes(), 10))
172+
match Felt252::parse_bytes(n.to_string().as_bytes(), 10) {
173+
Some(x) => Ok(Some(x)),
174+
None => Err(String::from("felt_from_number parse error")).map_err(de::Error::custom),
175+
}
173176
}
174177

175178
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
@@ -1386,4 +1389,16 @@ mod tests {
13861389
"()"
13871390
);
13881391
}
1392+
1393+
#[test]
1394+
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
1395+
fn deserialize_nonbase10_number_errors() {
1396+
let valid_json = r#"
1397+
{
1398+
"value" : 0x123
1399+
}"#;
1400+
1401+
let iden: Result<Identifier, serde_json::Error> = serde_json::from_str(valid_json);
1402+
assert!(iden.err().is_some());
1403+
}
13891404
}

0 commit comments

Comments
 (0)