Snap for 7272808 from e49a6766b24f7742d40687e500754b6ed4e69c39 to sc-v2-release

Change-Id: I401e1df1c086d4679d4f87b632e0a45b1c155a20
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 97d68b2..0be67b3 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
 {
   "git": {
-    "sha1": "1e5368c80fd4272ada7d2ed7c6be783376bb5080"
+    "sha1": "3eabf141db9d0d69961ba8a1eaf2907c7aeb8ff9"
   }
 }
diff --git a/Android.bp b/Android.bp
index 620d9f7..e180529 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,4 +1,5 @@
 // This file is generated by cargo2android.py --run --dependencies --tests.
+// Do not modify this file as changes will be overridden on upgrade.
 
 package {
     default_applicable_licenses: [
@@ -21,7 +22,6 @@
 
 rust_library_host {
     name: "libprotobuf_codegen",
-    // has rustc warnings
     crate_name: "protobuf_codegen",
     srcs: ["src/lib.rs"],
     edition: "2015",
@@ -32,11 +32,13 @@
 
 rust_test_host {
     name: "protobuf-codegen_host_test_src_lib",
-    // has rustc warnings
     crate_name: "protobuf_codegen",
     srcs: ["src/lib.rs"],
     test_suites: ["general-tests"],
     auto_gen_config: true,
+    test_options: {
+        unit_test: true,
+    },
     edition: "2015",
     rustlibs: [
         "libprotobuf",
@@ -45,7 +47,6 @@
 
 rust_binary_host {
     name: "protoc-gen-rust",
-    // has rustc warnings
     crate_name: "protoc_gen_rust",
     srcs: ["src/bin/protoc-gen-rust.rs"],
     edition: "2015",
@@ -56,4 +57,4 @@
 }
 
 // dependent_library ["feature_list"]
-//   protobuf-2.20.0
+//   protobuf-2.22.1
diff --git a/Cargo.lock b/Cargo.lock
index 900a439..8d6fde0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,14 +1,16 @@
 # This file is automatically @generated by Cargo.
 # It is not intended for manual editing.
+version = 3
+
 [[package]]
 name = "protobuf"
-version = "2.20.0"
+version = "2.22.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86473d5f16580f10b131a0bf0afb68f8e029d1835d33a00f37281b05694e5312"
+checksum = "1b7f4a129bb3754c25a4e04032a90173c68f85168f77118ac4cb4936e7f06f92"
 
 [[package]]
 name = "protobuf-codegen"
-version = "2.20.0"
+version = "2.22.1"
 dependencies = [
  "protobuf",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 3159edc..b594d67 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@
 
 [package]
 name = "protobuf-codegen"
-version = "2.20.0"
+version = "2.22.1"
 authors = ["Stepan Koltsov <stepan.koltsov@gmail.com>"]
 description = "Code generator for rust-protobuf.\n\nIncludes a library and `protoc-gen-rust` binary.\n\nSee `protoc-rust` and `protobuf-codegen-pure` crates.\n"
 homepage = "https://github.com/stepancheg/rust-protobuf/"
@@ -34,4 +34,4 @@
 path = "src/bin/protobuf-bin-gen-rust-do-not-use.rs"
 test = false
 [dependencies.protobuf]
-version = "=2.20.0"
+version = "=2.22.1"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 1f02fd0..07931fd 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "protobuf-codegen"
-version = "2.20.0"
+version = "2.22.1"
 authors = ["Stepan Koltsov <stepan.koltsov@gmail.com>"]
 license = "MIT"
 homepage = "https://github.com/stepancheg/rust-protobuf/"
@@ -17,7 +17,7 @@
 bench = false
 
 [dependencies]
-protobuf = { path = "../protobuf", version = "=2.20.0" }
+protobuf = { path = "../protobuf", version = "=2.22.1" }
 
 [[bin]]
 
diff --git a/METADATA b/METADATA
index 5a52570..e905992 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@
   }
   url {
     type: ARCHIVE
-    value: "https://static.crates.io/crates/protobuf-codegen/protobuf-codegen-2.20.0.crate"
+    value: "https://static.crates.io/crates/protobuf-codegen/protobuf-codegen-2.22.1.crate"
   }
-  version: "2.20.0"
+  version: "2.22.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2021
-    month: 1
-    day: 7
+    month: 4
+    day: 1
   }
 }
diff --git a/src/bin/protobuf-bin-gen-rust-do-not-use.rs b/src/bin/protobuf-bin-gen-rust-do-not-use.rs
index fc66d27..a6f96ca 100644
--- a/src/bin/protobuf-bin-gen-rust-do-not-use.rs
+++ b/src/bin/protobuf-bin-gen-rust-do-not-use.rs
@@ -6,12 +6,12 @@
 use std::path::Path;
 
 use protobuf::descriptor::*;
-use protobuf::parse_from_reader;
+use protobuf::Message;
 use protobuf_codegen::*;
 
 fn write_file(bin: &str) {
     let mut is = File::open(&Path::new(bin)).unwrap();
-    let fds = parse_from_reader::<FileDescriptorSet>(&mut is as &mut dyn Read).unwrap();
+    let fds = FileDescriptorSet::parse_from_reader(&mut is as &mut dyn Read).unwrap();
 
     let file_names: Vec<String> = fds
         .get_file()
diff --git a/src/code_writer.rs b/src/code_writer.rs
index 8b53bc6..f6d4c07 100644
--- a/src/code_writer.rs
+++ b/src/code_writer.rs
@@ -58,7 +58,7 @@
         self.write_line("#![allow(clippy::all)]");
         self.write_line("");
         self.write_line("#![allow(unused_attributes)]");
-        self.write_line("#![rustfmt::skip]");
+        self.write_line("#![cfg_attr(rustfmt, rustfmt::skip)]");
         self.write_line("");
         self.write_line("#![allow(box_pointers)]");
         self.write_line("#![allow(dead_code)]");
diff --git a/src/enums.rs b/src/enums.rs
index 18dcbec..c2ce241 100644
--- a/src/enums.rs
+++ b/src/enums.rs
@@ -170,7 +170,11 @@
             w.comment("Note: you cannot use pattern matching for enums with allow_alias option");
         }
         w.derive(&derive);
-        serde::write_serde_attr(w, &self.customize, "derive(Serialize, Deserialize)");
+        serde::write_serde_attr(
+            w,
+            &self.customize,
+            "derive(::serde::Serialize, ::serde::Deserialize)",
+        );
         let ref type_name = self.type_name;
         w.expr_block(&format!("pub enum {}", type_name), |w| {
             for value in self.values_all() {
diff --git a/src/field/mod.rs b/src/field/mod.rs
index cbe99ee..842f01f 100644
--- a/src/field/mod.rs
+++ b/src/field/mod.rs
@@ -63,7 +63,7 @@
 }
 
 fn field_type_wire_type(field_type: FieldDescriptorProto_Type) -> wire_format::WireType {
-    use protobuf::stream::wire_format::*;
+    use protobuf::wire_format::*;
     match field_type {
         FieldDescriptorProto_Type::TYPE_INT32 => WireTypeVarint,
         FieldDescriptorProto_Type::TYPE_INT64 => WireTypeVarint,
diff --git a/src/lib.rs b/src/lib.rs
index 859fa5e..3458957 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -192,7 +192,7 @@
     {
         let mut w = CodeWriter::new(&mut v);
 
-        w.write_generated_by("rust-protobuf", "2.20.0");
+        w.write_generated_by("rust-protobuf", "2.22.1");
         w.write_line(&format!("//! Generated file from `{}`", file.get_name()));
         if customize.inside_protobuf != Some(true) {
             w.write_line("");
diff --git a/src/message.rs b/src/message.rs
index e39ff36..6987ce7 100644
--- a/src/message.rs
+++ b/src/message.rs
@@ -501,7 +501,11 @@
             derive.push("Debug");
         }
         w.derive(&derive);
-        serde::write_serde_attr(w, &self.customize, "derive(Serialize, Deserialize)");
+        serde::write_serde_attr(
+            w,
+            &self.customize,
+            "derive(::serde::Serialize, ::serde::Deserialize)",
+        );
         w.pub_struct(&self.type_name.to_string(), |w| {
             if !self.fields_except_oneof().is_empty() {
                 w.comment("message fields");
diff --git a/src/oneof.rs b/src/oneof.rs
index 82aba7d..e767709 100644
--- a/src/oneof.rs
+++ b/src/oneof.rs
@@ -181,7 +181,11 @@
     pub fn write_enum(&self, w: &mut CodeWriter) {
         let derive = vec!["Clone", "PartialEq", "Debug"];
         w.derive(&derive);
-        serde::write_serde_attr(w, &self.customize, "derive(Serialize, Deserialize)");
+        serde::write_serde_attr(
+            w,
+            &self.customize,
+            "derive(::serde::Serialize, ::serde::Deserialize)",
+        );
         w.pub_enum(&self.type_name.to_code(&self.customize), |w| {
             for variant in self.variants_except_group() {
                 w.write_line(&format!(