Snap for 8192738 from 7659780bcb3e26e940d2e566d01cefa69d355abe to tm-frc-extservices-release
Change-Id: Iab2600eac9df11886d3356ab93469f8bb5fbf026
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 1eff8ec..d722bd8 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
{
"git": {
- "sha1": "e9270e59f0c46817899dd61119674396f24c2b3e"
+ "sha1": "65e1a50749938612cfbdb69b57fc4cf249f87149"
}
}
diff --git a/Android.bp b/Android.bp
index 2284c8e..3568ea5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -42,6 +42,8 @@
name: "libserde",
host_supported: true,
crate_name: "serde",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.0.130",
srcs: ["src/lib.rs"],
edition: "2015",
features: [
@@ -58,13 +60,13 @@
"de_boxed_path",
"de_rc_dst",
"integer128",
+ "iterator_try_fold",
"num_nonzero",
"num_nonzero_signed",
"ops_bound",
"range_inclusive",
"serde_derive",
"std_atomic",
- // "std_atomic64", // not for arm/arm64
"systemtime_checked_add",
],
proc_macros: ["libserde_derive"],
@@ -72,11 +74,44 @@
"//apex_available:platform",
"com.android.virt",
],
+ vendor_available: true,
}
-// dependent_library ["feature_list"]
-// proc-macro2-1.0.26 "default,proc-macro"
-// quote-1.0.9 "default,proc-macro"
-// serde_derive-1.0.125 "default"
-// syn-1.0.71 "clone-impls,default,derive,parsing,printing,proc-macro,quote"
-// unicode-xid-0.2.1 "default"
+rust_test {
+ name: "serde_test_src_lib",
+ host_supported: true,
+ crate_name: "serde",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.0.130",
+ srcs: ["src/lib.rs"],
+ test_suites: ["general-tests"],
+ auto_gen_config: true,
+ test_options: {
+ unit_test: true,
+ },
+ edition: "2015",
+ features: [
+ "default",
+ "derive",
+ "serde_derive",
+ "std",
+ ],
+ cfgs: [
+ "core_duration",
+ "core_reverse",
+ "core_try_from",
+ "de_boxed_c_str",
+ "de_boxed_path",
+ "de_rc_dst",
+ "integer128",
+ "iterator_try_fold",
+ "num_nonzero",
+ "num_nonzero_signed",
+ "ops_bound",
+ "range_inclusive",
+ "serde_derive",
+ "std_atomic",
+ "systemtime_checked_add",
+ ],
+ proc_macros: ["libserde_derive"],
+}
diff --git a/Cargo.toml b/Cargo.toml
index a260341..944be6b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,16 +3,15 @@
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
[package]
name = "serde"
-version = "1.0.125"
+version = "1.0.130"
authors = ["Erick Tryzelaar <[email protected]>", "David Tolnay <[email protected]>"]
build = "build.rs"
include = ["build.rs", "src/**/*.rs", "crates-io.md", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
@@ -30,7 +29,7 @@
[package.metadata.playground]
features = ["derive", "rc"]
[dependencies.serde_derive]
-version = "=1.0.125"
+version = "=1.0.130"
optional = true
[dev-dependencies.serde_derive]
version = "1.0"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 6488d90..7065d99 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
[package]
name = "serde"
-version = "1.0.125" # remember to update html_root_url and serde_derive dependency
+version = "1.0.130" # remember to update html_root_url and serde_derive dependency
authors = ["Erick Tryzelaar <[email protected]>", "David Tolnay <[email protected]>"]
license = "MIT OR Apache-2.0"
description = "A generic serialization/deserialization framework"
@@ -14,7 +14,7 @@
build = "build.rs"
[dependencies]
-serde_derive = { version = "=1.0.125", optional = true, path = "../serde_derive" }
+serde_derive = { version = "=1.0.130", optional = true, path = "../serde_derive" }
[dev-dependencies]
serde_derive = { version = "1.0", path = "../serde_derive" }
diff --git a/METADATA b/METADATA
index 4072511..a3ba416 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@
}
url {
type: ARCHIVE
- value: "https://static.crates.io/crates/serde/serde-1.0.125.crate"
+ value: "https://static.crates.io/crates/serde/serde-1.0.130.crate"
}
- version: "1.0.125"
+ version: "1.0.130"
license_type: NOTICE
last_upgrade_date {
year: 2021
- month: 4
- day: 13
+ month: 9
+ day: 22
}
}
diff --git a/TEST_MAPPING b/TEST_MAPPING
index b835c6b..da1479a 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -1,53 +1,102 @@
// Generated by update_crate_tests.py for tests that depend on this crate.
{
+ "imports": [
+ {
+ "path": "external/rust/crates/base64"
+ },
+ {
+ "path": "external/rust/crates/bitflags"
+ },
+ {
+ "path": "external/rust/crates/bytes"
+ },
+ {
+ "path": "external/rust/crates/either"
+ },
+ {
+ "path": "external/rust/crates/rand_chacha"
+ },
+ {
+ "path": "external/rust/crates/serde-xml-rs"
+ },
+ {
+ "path": "external/rust/crates/serde_cbor"
+ },
+ {
+ "path": "external/rust/crates/slab"
+ },
+ {
+ "path": "external/rust/crates/tinytemplate"
+ },
+ {
+ "path": "external/rust/crates/tinyvec"
+ },
+ {
+ "path": "external/rust/crates/unicode-bidi"
+ },
+ {
+ "path": "external/rust/crates/unicode-xid"
+ },
+ {
+ "path": "external/rust/crates/url"
+ }
+ ],
"presubmit": [
{
+ "name": "ZipFuseTest"
+ },
+ {
+ "name": "apkdmverity.test"
+ },
+ {
"name": "authfs_device_test_src_lib"
},
{
- "name": "either_device_test_src_lib"
+ "name": "keystore2_test"
},
{
- "name": "serde_cbor_device_test_src_lib"
+ "name": "keystore2_test_utils_test"
},
{
- "name": "serde_cbor_device_test_tests_bennofs"
+ "name": "legacykeystore_test"
},
{
- "name": "serde_cbor_device_test_tests_canonical"
+ "name": "microdroid_manager_test"
},
{
- "name": "serde_cbor_device_test_tests_de"
+ "name": "serde_test_src_lib"
},
{
- "name": "serde_cbor_device_test_tests_enum"
+ "name": "virtualizationservice_device_test"
+ }
+ ],
+ "presubmit-rust": [
+ {
+ "name": "ZipFuseTest"
},
{
- "name": "serde_cbor_device_test_tests_ser"
+ "name": "apkdmverity.test"
},
{
- "name": "serde_cbor_device_test_tests_std_types"
+ "name": "authfs_device_test_src_lib"
},
{
- "name": "serde_cbor_device_test_tests_tags"
+ "name": "keystore2_test"
},
{
- "name": "serde_cbor_device_test_tests_value"
+ "name": "keystore2_test_utils_test"
},
{
- "name": "serde_test_device_test_src_lib"
+ "name": "legacykeystore_test"
},
{
- "name": "unicode-bidi_device_test_src_lib"
+ "name": "microdroid_manager_test"
},
{
- "name": "url_device_test_src_lib"
+ "name": "serde_test_src_lib"
},
{
- "name": "url_device_test_tests_data"
- },
- {
- "name": "url_device_test_tests_unit"
+ "name": "virtualizationservice_device_test"
}
]
}
diff --git a/build.rs b/build.rs
index afda291..52834bf 100644
--- a/build.rs
+++ b/build.rs
@@ -53,16 +53,20 @@
// 128-bit integers stabilized in Rust 1.26:
// https://blog.rust-lang.org/2018/05/10/Rust-1.26.html
//
- // Disabled on Emscripten targets as Emscripten doesn't
- // currently support integers larger than 64 bits.
- if minor >= 26 && !emscripten {
+ // Disabled on Emscripten targets before Rust 1.40 since
+ // Emscripten did not support 128-bit integers until Rust 1.40
+ // (https://github.com/rust-lang/rust/pull/65251)
+ if minor >= 26 && (!emscripten || minor >= 40) {
println!("cargo:rustc-cfg=integer128");
}
// Inclusive ranges methods stabilized in Rust 1.27:
// https://github.com/rust-lang/rust/pull/50758
+ // Also Iterator::try_for_each:
+ // https://blog.rust-lang.org/2018/06/21/Rust-1.27.html#library-stabilizations
if minor >= 27 {
println!("cargo:rustc-cfg=range_inclusive");
+ println!("cargo:rustc-cfg=iterator_try_fold");
}
// Non-zero integers stabilized in Rust 1.28:
diff --git a/cargo2android.json b/cargo2android.json
index 4e40fcb..2a35106 100644
--- a/cargo2android.json
+++ b/cargo2android.json
@@ -3,9 +3,13 @@
"//apex_available:platform",
"com.android.virt"
],
+ "cfg-blocklist": [
+ "std_atomic64"
+ ],
"dependencies": true,
"device": true,
"features": "default,derive",
- "patch": "patches/Android.bp.patch",
- "run": true
+ "run": true,
+ "tests": true,
+ "vendor-available": true
}
\ No newline at end of file
diff --git a/patches/Android.bp.patch b/patches/Android.bp.patch
deleted file mode 100644
index 071947f..0000000
--- a/patches/Android.bp.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git b/Android.bp a/Android.bp
-index 41d67cc..277296f 100644
---- b/Android.bp
-+++ a/Android.bp
-@@ -64,7 +64,7 @@
- "range_inclusive",
- "serde_derive",
- "std_atomic",
-- "std_atomic64",
-+ // "std_atomic64", // not for arm/arm64
- "systemtime_checked_add",
- ],
- proc_macros: ["libserde_derive"],
diff --git a/src/de/mod.rs b/src/de/mod.rs
index 1ed7b4f..54e2fd6 100644
--- a/src/de/mod.rs
+++ b/src/de/mod.rs
@@ -1007,7 +1007,7 @@
/// `Deserializer`.
///
/// If the `Visitor` would benefit from taking ownership of `String` data,
- /// indiciate this to the `Deserializer` by using `deserialize_string`
+ /// indicate this to the `Deserializer` by using `deserialize_string`
/// instead.
fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where
@@ -1714,7 +1714,7 @@
}
}
-impl<'de, 'a, A> SeqAccess<'de> for &'a mut A
+impl<'de, 'a, A: ?Sized> SeqAccess<'de> for &'a mut A
where
A: SeqAccess<'de>,
{
@@ -1867,7 +1867,7 @@
}
}
-impl<'de, 'a, A> MapAccess<'de> for &'a mut A
+impl<'de, 'a, A: ?Sized> MapAccess<'de> for &'a mut A
where
A: MapAccess<'de>,
{
diff --git a/src/lib.rs b/src/lib.rs
index 5c07ece..aad6851 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -84,7 +84,7 @@
////////////////////////////////////////////////////////////////////////////////
// Serde types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/serde/1.0.125")]
+#![doc(html_root_url = "https://docs.rs/serde/1.0.130")]
// Support using Serde without the standard library!
#![cfg_attr(not(feature = "std"), no_std)]
// Unstable functionality only if the user asks for it. For tracking and
@@ -157,7 +157,7 @@
pub use std::*;
}
- pub use self::core::{cmp, iter, mem, num, slice, str};
+ pub use self::core::{cmp, iter, mem, num, ptr, slice, str};
pub use self::core::{f32, f64};
pub use self::core::{i16, i32, i64, i8, isize};
pub use self::core::{u16, u32, u64, u8, usize};
diff --git a/src/private/de.rs b/src/private/de.rs
index 9199816..a387d40 100644
--- a/src/private/de.rs
+++ b/src/private/de.rs
@@ -2832,7 +2832,7 @@
where
T: DeserializeSeed<'de>,
{
- while let Some(item) = self.iter.next() {
+ for item in &mut self.iter {
// Items in the vector are nulled out when used by a struct.
if let Some((ref key, ref content)) = *item {
self.pending_content = Some(content);
@@ -2934,7 +2934,7 @@
where
T: DeserializeSeed<'de>,
{
- while let Some(item) = self.iter.next() {
+ for item in &mut self.iter {
if let Some((ref key, ref content)) = *item {
// Do not take(), instead borrow this entry. The internally tagged
// enum does its own buffering so we can't tell whether this entry
diff --git a/src/private/mod.rs b/src/private/mod.rs
index 24ea84b..71e82a8 100644
--- a/src/private/mod.rs
+++ b/src/private/mod.rs
@@ -14,6 +14,7 @@
pub use lib::fmt::{self, Formatter};
pub use lib::marker::PhantomData;
pub use lib::option::Option::{self, None, Some};
+pub use lib::ptr;
pub use lib::result::Result::{self, Err, Ok};
pub use self::string::from_utf8_lossy;
diff --git a/src/ser/mod.rs b/src/ser/mod.rs
index d686c5a..d5bca09 100644
--- a/src/ser/mod.rs
+++ b/src/ser/mod.rs
@@ -1279,9 +1279,20 @@
{
let iter = iter.into_iter();
let mut serializer = try!(self.serialize_seq(iterator_len_hint(&iter)));
- for item in iter {
- try!(serializer.serialize_element(&item));
+
+ #[cfg(iterator_try_fold)]
+ {
+ let mut iter = iter;
+ try!(iter.try_for_each(|item| serializer.serialize_element(&item)));
}
+
+ #[cfg(not(iterator_try_fold))]
+ {
+ for item in iter {
+ try!(serializer.serialize_element(&item));
+ }
+ }
+
serializer.end()
}
@@ -1319,9 +1330,20 @@
{
let iter = iter.into_iter();
let mut serializer = try!(self.serialize_map(iterator_len_hint(&iter)));
- for (key, value) in iter {
- try!(serializer.serialize_entry(&key, &value));
+
+ #[cfg(iterator_try_fold)]
+ {
+ let mut iter = iter;
+ try!(iter.try_for_each(|(key, value)| serializer.serialize_entry(&key, &value)));
}
+
+ #[cfg(not(iterator_try_fold))]
+ {
+ for (key, value) in iter {
+ try!(serializer.serialize_entry(&key, &value));
+ }
+ }
+
serializer.end()
}