aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Galenson <jgalenson@google.com>2021-10-14 18:31:55 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-10-14 18:31:55 +0000
commit8695fb5c781736ad0f9fc51cb89c2c6e0712fa8d (patch)
tree4811788d84fe11a9bd6cb858921536d9c641037a
parent30dca59194cc430e0a0fefcbfd83f826b38d05c1 (diff)
parent90f06507bf79a4179dfe4cbabd9be7a756d9c46d (diff)
downloadserde_json-8695fb5c781736ad0f9fc51cb89c2c6e0712fa8d.tar.gz
Merge "Upgrade rust/crates/serde_json to 1.0.68" am: 7df28121ab am: 520f396092 am: 90f06507bf
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/serde_json/+/1833324 Change-Id: I589695127595dec9fd5e1f53b525d327d055ce8e
-rw-r--r--.cargo_vcs_info.json4
-rw-r--r--Android.bp12
-rw-r--r--Cargo.toml2
-rw-r--r--Cargo.toml.orig2
-rw-r--r--METADATA8
-rw-r--r--src/de.rs4
-rw-r--r--src/lib.rs2
-rw-r--r--src/map.rs1
-rw-r--r--src/value/de.rs120
9 files changed, 26 insertions, 129 deletions
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 53f9a19..76c8954 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
{
"git": {
- "sha1": "6346bb30037f31ea69b9a4eb029875e23521681c"
+ "sha1": "9420d3a0a4ebf17ef1deeecee07851f58ff6148f"
}
-}
+} \ No newline at end of file
diff --git a/Android.bp b/Android.bp
index 33f4c5a..ba9e37d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -42,6 +42,8 @@ rust_library {
name: "libserde_json",
host_supported: true,
crate_name: "serde_json",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.0.68",
srcs: ["src/lib.rs"],
edition: "2018",
features: [
@@ -59,13 +61,3 @@ rust_library {
"com.android.virt",
],
}
-
-// dependent_library ["feature_list"]
-// itoa-0.4.7
-// proc-macro2-1.0.28 "default,proc-macro"
-// quote-1.0.9 "default,proc-macro"
-// ryu-1.0.5
-// serde-1.0.127 "default,derive,serde_derive,std"
-// serde_derive-1.0.127 "default"
-// syn-1.0.74 "clone-impls,default,derive,parsing,printing,proc-macro,quote"
-// unicode-xid-0.2.2 "default"
diff --git a/Cargo.toml b/Cargo.toml
index a6e056b..bf7879d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "serde_json"
-version = "1.0.66"
+version = "1.0.68"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
include = ["build.rs", "src/**/*.rs", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
description = "A JSON serialization file format"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index a664e75..5c647a1 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
[package]
name = "serde_json"
-version = "1.0.66" # remember to update html_root_url
+version = "1.0.68" # remember to update html_root_url
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
license = "MIT OR Apache-2.0"
description = "A JSON serialization file format"
diff --git a/METADATA b/METADATA
index dfec5e7..f82a5b2 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@ third_party {
}
url {
type: ARCHIVE
- value: "https://static.crates.io/crates/serde_json/serde_json-1.0.66.crate"
+ value: "https://static.crates.io/crates/serde_json/serde_json-1.0.68.crate"
}
- version: "1.0.66"
+ version: "1.0.68"
license_type: NOTICE
last_upgrade_date {
year: 2021
- month: 8
- day: 9
+ month: 9
+ day: 22
}
}
diff --git a/src/de.rs b/src/de.rs
index 7cc9f9b..a2f34b9 100644
--- a/src/de.rs
+++ b/src/de.rs
@@ -434,8 +434,8 @@ impl<'de, R: Read<'de>> Deserializer<R> {
} else {
let neg = (significand as i64).wrapping_neg();
- // Convert into a float if we underflow.
- if neg > 0 {
+ // Convert into a float if we underflow, or on `-0`.
+ if neg >= 0 {
ParserNumber::F64(-(significand as f64))
} else {
ParserNumber::I64(neg)
diff --git a/src/lib.rs b/src/lib.rs
index a7b781b..319ce71 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -300,7 +300,7 @@
//! [macro]: https://docs.serde.rs/serde_json/macro.json.html
//! [`serde-json-core`]: https://github.com/rust-embedded-community/serde-json-core
-#![doc(html_root_url = "https://docs.rs/serde_json/1.0.66")]
+#![doc(html_root_url = "https://docs.rs/serde_json/1.0.68")]
#![deny(clippy::all, clippy::pedantic)]
// Ignored clippy lints
#![allow(
diff --git a/src/map.rs b/src/map.rs
index c8fb503..716f128 100644
--- a/src/map.rs
+++ b/src/map.rs
@@ -251,6 +251,7 @@ impl Map<String, Value> {
}
}
+#[allow(clippy::derivable_impls)] // clippy bug: https://github.com/rust-lang/rust-clippy/issues/7655
impl Default for Map<String, Value> {
#[inline]
fn default() -> Self {
diff --git a/src/value/de.rs b/src/value/de.rs
index a66d692..24ca826 100644
--- a/src/value/de.rs
+++ b/src/value/de.rs
@@ -512,7 +512,11 @@ impl<'de> VariantAccess<'de> for VariantDeserializer {
{
match self.value {
Some(Value::Array(v)) => {
- serde::Deserializer::deserialize_any(SeqDeserializer::new(v), visitor)
+ if v.is_empty() {
+ visitor.visit_unit()
+ } else {
+ visit_array(v, visitor)
+ }
}
Some(other) => Err(serde::de::Error::invalid_type(
other.unexpected(),
@@ -534,9 +538,7 @@ impl<'de> VariantAccess<'de> for VariantDeserializer {
V: Visitor<'de>,
{
match self.value {
- Some(Value::Object(v)) => {
- serde::Deserializer::deserialize_any(MapDeserializer::new(v), visitor)
- }
+ Some(Value::Object(v)) => visit_object(v, visitor),
Some(other) => Err(serde::de::Error::invalid_type(
other.unexpected(),
&"struct variant",
@@ -561,38 +563,6 @@ impl SeqDeserializer {
}
}
-impl<'de> serde::Deserializer<'de> for SeqDeserializer {
- type Error = Error;
-
- #[inline]
- fn deserialize_any<V>(mut self, visitor: V) -> Result<V::Value, Error>
- where
- V: Visitor<'de>,
- {
- let len = self.iter.len();
- if len == 0 {
- visitor.visit_unit()
- } else {
- let ret = tri!(visitor.visit_seq(&mut self));
- let remaining = self.iter.len();
- if remaining == 0 {
- Ok(ret)
- } else {
- Err(serde::de::Error::invalid_length(
- len,
- &"fewer elements in array",
- ))
- }
- }
- }
-
- forward_to_deserialize_any! {
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
- bytes byte_buf option unit unit_struct newtype_struct seq tuple
- tuple_struct map struct enum identifier ignored_any
- }
-}
-
impl<'de> SeqAccess<'de> for SeqDeserializer {
type Error = Error;
@@ -665,24 +635,6 @@ impl<'de> MapAccess<'de> for MapDeserializer {
}
}
-impl<'de> serde::Deserializer<'de> for MapDeserializer {
- type Error = Error;
-
- #[inline]
- fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>
- where
- V: Visitor<'de>,
- {
- visitor.visit_map(self)
- }
-
- forward_to_deserialize_any! {
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
- bytes byte_buf option unit unit_struct newtype_struct seq tuple
- tuple_struct map struct enum identifier ignored_any
- }
-}
-
macro_rules! deserialize_value_ref_number {
($method:ident) => {
#[cfg(not(feature = "arbitrary_precision"))]
@@ -1043,7 +995,11 @@ impl<'de> VariantAccess<'de> for VariantRefDeserializer<'de> {
{
match self.value {
Some(&Value::Array(ref v)) => {
- serde::Deserializer::deserialize_any(SeqRefDeserializer::new(v), visitor)
+ if v.is_empty() {
+ visitor.visit_unit()
+ } else {
+ visit_array_ref(v, visitor)
+ }
}
Some(other) => Err(serde::de::Error::invalid_type(
other.unexpected(),
@@ -1065,9 +1021,7 @@ impl<'de> VariantAccess<'de> for VariantRefDeserializer<'de> {
V: Visitor<'de>,
{
match self.value {
- Some(&Value::Object(ref v)) => {
- serde::Deserializer::deserialize_any(MapRefDeserializer::new(v), visitor)
- }
+ Some(&Value::Object(ref v)) => visit_object_ref(v, visitor),
Some(other) => Err(serde::de::Error::invalid_type(
other.unexpected(),
&"struct variant",
@@ -1090,38 +1044,6 @@ impl<'de> SeqRefDeserializer<'de> {
}
}
-impl<'de> serde::Deserializer<'de> for SeqRefDeserializer<'de> {
- type Error = Error;
-
- #[inline]
- fn deserialize_any<V>(mut self, visitor: V) -> Result<V::Value, Error>
- where
- V: Visitor<'de>,
- {
- let len = self.iter.len();
- if len == 0 {
- visitor.visit_unit()
- } else {
- let ret = tri!(visitor.visit_seq(&mut self));
- let remaining = self.iter.len();
- if remaining == 0 {
- Ok(ret)
- } else {
- Err(serde::de::Error::invalid_length(
- len,
- &"fewer elements in array",
- ))
- }
- }
- }
-
- forward_to_deserialize_any! {
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
- bytes byte_buf option unit unit_struct newtype_struct seq tuple
- tuple_struct map struct enum identifier ignored_any
- }
-}
-
impl<'de> SeqAccess<'de> for SeqRefDeserializer<'de> {
type Error = Error;
@@ -1194,24 +1116,6 @@ impl<'de> MapAccess<'de> for MapRefDeserializer<'de> {
}
}
-impl<'de> serde::Deserializer<'de> for MapRefDeserializer<'de> {
- type Error = Error;
-
- #[inline]
- fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>
- where
- V: Visitor<'de>,
- {
- visitor.visit_map(self)
- }
-
- forward_to_deserialize_any! {
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
- bytes byte_buf option unit unit_struct newtype_struct seq tuple
- tuple_struct map struct enum identifier ignored_any
- }
-}
-
struct MapKeyDeserializer<'de> {
key: Cow<'de, str>,
}