mirror of
https://github.com/serde-rs/json.git
synced 2025-10-02 15:26:00 +00:00
Fix adjacently tagged f32 roundtrip regression
This commit is contained in:
parent
6ac689b2b3
commit
d79c8e5f1e
@ -22,6 +22,7 @@ itoa = "0.4.3"
|
||||
ryu = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
automod = "0.1"
|
||||
compiletest_rs = { version = "0.3", features = ["stable"] }
|
||||
serde_bytes = "0.10"
|
||||
serde_derive = "1.0"
|
||||
|
@ -473,7 +473,7 @@ macro_rules! deserialize_any {
|
||||
} else if let Some(i) = self.as_i64() {
|
||||
return visitor.visit_i64(i);
|
||||
} else if let Some(f) = self.as_f64() {
|
||||
if f.to_string() == self.n {
|
||||
if ryu::Buffer::new().format(f) == self.n || f.to_string() == self.n {
|
||||
return visitor.visit_f64(f);
|
||||
}
|
||||
}
|
||||
|
6
tests/regression.rs
Normal file
6
tests/regression.rs
Normal file
@ -0,0 +1,6 @@
|
||||
extern crate automod;
|
||||
extern crate serde;
|
||||
extern crate serde_derive;
|
||||
|
||||
#[path = "regression/mod.rs"]
|
||||
mod regression;
|
18
tests/regression/issue520.rs
Normal file
18
tests/regression/issue520.rs
Normal file
@ -0,0 +1,18 @@
|
||||
use serde_derive::{Serialize, Deserialize};
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[serde(tag = "type", content = "data")]
|
||||
enum E {
|
||||
Float(f32),
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test() {
|
||||
let e = E::Float(159.1);
|
||||
let v = serde_json::to_value(e).unwrap();
|
||||
let e = serde_json::from_value::<E>(v).unwrap();
|
||||
|
||||
match e {
|
||||
E::Float(f) => assert_eq!(f, 159.1),
|
||||
}
|
||||
}
|
1
tests/regression/mod.rs
Normal file
1
tests/regression/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
automod::dir!("tests/regression");
|
Loading…
x
Reference in New Issue
Block a user