Upgrade rust/crates/structopt to 0.3.21

Test: make
Change-Id: I8b7f385accd0609f9b56cc77c55af99ca40c5241
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index ae54c03..7d10f0d 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
 {
   "git": {
-    "sha1": "6fa8d68298eab6b4eb94b4b40ce64992b20c7263"
+    "sha1": "8bda3b64daf53f0ed6bb6bee2c767a63c7c477fc"
   }
 }
diff --git a/.gitignore b/.gitignore
old mode 100755
new mode 100644
diff --git a/.travis.yml b/.travis.yml
old mode 100755
new mode 100644
diff --git a/Android.bp b/Android.bp
index 790b4ff..4e4d54b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -27,10 +27,10 @@
 //   proc-macro2-1.0.24 "default,proc-macro"
 //   quote-1.0.7 "default,proc-macro"
 //   strsim-0.8.0
-//   structopt-derive-0.4.13
-//   syn-1.0.48 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote,visit"
+//   structopt-derive-0.4.14
+//   syn-1.0.53 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote,visit"
 //   textwrap-0.11.0
-//   unicode-segmentation-1.6.0
+//   unicode-segmentation-1.7.1
 //   unicode-width-0.1.8 "default"
 //   unicode-xid-0.2.1 "default"
 //   vec_map-0.8.2
diff --git a/CHANGELOG.md b/CHANGELOG.md
old mode 100755
new mode 100644
index ccdde68..650afea
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# v0.3.21 (2020-11-30)
+
+* Fixed [another breakage](https://github.com/TeXitoi/structopt/issues/447)
+  when the struct is placed inside a `macro_rules!` macro.
+
 # v0.3.20 (2020-10-12)
 
 * Fixed [a breakage](https://github.com/TeXitoi/structopt/issues/439)
diff --git a/Cargo.toml b/Cargo.toml
index 8ccdd09..d24c98b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,7 +13,7 @@
 [package]
 edition = "2018"
 name = "structopt"
-version = "0.3.20"
+version = "0.3.21"
 authors = ["Guillaume Pinot <texitoi@texitoi.eu>", "others"]
 description = "Parse command line argument by defining a struct."
 documentation = "https://docs.rs/structopt"
@@ -35,7 +35,7 @@
 package = "paw"
 
 [dependencies.structopt-derive]
-version = "=0.4.13"
+version = "=0.4.14"
 [dev-dependencies.rustversion]
 version = "1"
 
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
old mode 100755
new mode 100644
index 7c4efaf..fdad9ef
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "structopt"
-version = "0.3.20"
+version = "0.3.21"
 edition = "2018"
 authors = ["Guillaume Pinot <texitoi@texitoi.eu>", "others"]
 description = "Parse command line argument by defining a struct."
@@ -28,7 +28,7 @@
 
 [dependencies]
 clap = { version = "2.33", default-features = false }
-structopt-derive = { path = "structopt-derive", version = "=0.4.13" }
+structopt-derive = { path = "structopt-derive", version = "=0.4.14" }
 lazy_static = "1.4.0"
 paw_dep = { version = "1", optional = true, package = "paw" }
 
diff --git a/LICENSE-APACHE b/LICENSE-APACHE
old mode 100755
new mode 100644
diff --git a/LICENSE-MIT b/LICENSE-MIT
old mode 100755
new mode 100644
diff --git a/METADATA b/METADATA
index b4901c8..df2195b 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@
   }
   url {
     type: ARCHIVE
-    value: "https://static.crates.io/crates/structopt/structopt-0.3.20.crate"
+    value: "https://static.crates.io/crates/structopt/structopt-0.3.21.crate"
   }
-  version: "0.3.20"
+  version: "0.3.21"
   license_type: NOTICE
   last_upgrade_date {
     year: 2020
-    month: 10
-    day: 26
+    month: 11
+    day: 30
   }
 }
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
diff --git a/examples/README.md b/examples/README.md
old mode 100755
new mode 100644
diff --git a/examples/after_help.rs b/examples/after_help.rs
old mode 100755
new mode 100644
diff --git a/examples/at_least_two.rs b/examples/at_least_two.rs
old mode 100755
new mode 100644
diff --git a/examples/basic.rs b/examples/basic.rs
old mode 100755
new mode 100644
diff --git a/examples/deny_missing_docs.rs b/examples/deny_missing_docs.rs
old mode 100755
new mode 100644
diff --git a/examples/doc_comments.rs b/examples/doc_comments.rs
old mode 100755
new mode 100644
diff --git a/examples/enum_in_args.rs b/examples/enum_in_args.rs
old mode 100755
new mode 100644
diff --git a/examples/enum_tuple.rs b/examples/enum_tuple.rs
old mode 100755
new mode 100644
diff --git a/examples/env.rs b/examples/env.rs
old mode 100755
new mode 100644
diff --git a/examples/example.rs b/examples/example.rs
old mode 100755
new mode 100644
diff --git a/examples/flatten.rs b/examples/flatten.rs
old mode 100755
new mode 100644
diff --git a/examples/gen_completions.rs b/examples/gen_completions.rs
old mode 100755
new mode 100644
diff --git a/examples/git.rs b/examples/git.rs
old mode 100755
new mode 100644
diff --git a/examples/group.rs b/examples/group.rs
old mode 100755
new mode 100644
diff --git a/examples/keyvalue.rs b/examples/keyvalue.rs
old mode 100755
new mode 100644
diff --git a/examples/negative_flag.rs b/examples/negative_flag.rs
old mode 100755
new mode 100644
diff --git a/examples/no_version.rs b/examples/no_version.rs
old mode 100755
new mode 100644
diff --git a/examples/rename_all.rs b/examples/rename_all.rs
old mode 100755
new mode 100644
diff --git a/examples/required_if.rs b/examples/required_if.rs
old mode 100755
new mode 100644
diff --git a/examples/skip.rs b/examples/skip.rs
old mode 100755
new mode 100644
diff --git a/examples/subcommand_aliases.rs b/examples/subcommand_aliases.rs
old mode 100755
new mode 100644
diff --git a/examples/true_or_false.rs b/examples/true_or_false.rs
old mode 100755
new mode 100644
diff --git a/link-check-headers.json b/link-check-headers.json
old mode 100755
new mode 100644
diff --git a/src/lib.rs b/src/lib.rs
old mode 100755
new mode 100644
diff --git a/tests/argument_naming.rs b/tests/argument_naming.rs
old mode 100755
new mode 100644
diff --git a/tests/arguments.rs b/tests/arguments.rs
old mode 100755
new mode 100644
diff --git a/tests/author_version_about.rs b/tests/author_version_about.rs
old mode 100755
new mode 100644
diff --git a/tests/custom-string-parsers.rs b/tests/custom-string-parsers.rs
old mode 100755
new mode 100644
diff --git a/tests/default_value.rs b/tests/default_value.rs
old mode 100755
new mode 100644
diff --git a/tests/deny-warnings.rs b/tests/deny-warnings.rs
old mode 100755
new mode 100644
diff --git a/tests/doc-comments-help.rs b/tests/doc-comments-help.rs
old mode 100755
new mode 100644
diff --git a/tests/explicit_name_no_renaming.rs b/tests/explicit_name_no_renaming.rs
old mode 100755
new mode 100644
diff --git a/tests/flags.rs b/tests/flags.rs
old mode 100755
new mode 100644
diff --git a/tests/flatten.rs b/tests/flatten.rs
old mode 100755
new mode 100644
diff --git a/tests/issues.rs b/tests/issues.rs
old mode 100755
new mode 100644
diff --git a/tests/macro-errors.rs b/tests/macro-errors.rs
old mode 100755
new mode 100644
diff --git a/tests/nested-subcommands.rs b/tests/nested-subcommands.rs
old mode 100755
new mode 100644
diff --git a/tests/non_literal_attributes.rs b/tests/non_literal_attributes.rs
old mode 100755
new mode 100644
diff --git a/tests/options.rs b/tests/options.rs
old mode 100755
new mode 100644
diff --git a/tests/privacy.rs b/tests/privacy.rs
old mode 100755
new mode 100644
diff --git a/tests/raw_bool_literal.rs b/tests/raw_bool_literal.rs
old mode 100755
new mode 100644
diff --git a/tests/raw_idents.rs b/tests/raw_idents.rs
old mode 100755
new mode 100644
diff --git a/tests/regressions.rs b/tests/regressions.rs
old mode 100755
new mode 100644
index 876e7ed..3847dc2
--- a/tests/regressions.rs
+++ b/tests/regressions.rs
@@ -23,3 +23,23 @@
     assert!(!help.contains("--x <x>"));
     Opts::from_iter_safe(&["test", "--x"]).unwrap();
 }
+
+#[test]
+fn issue_447() {
+    macro_rules! Command {
+        ( $name:ident, [
+        #[$meta:meta] $var:ident($inner:ty)
+      ] ) => {
+            #[derive(Debug, PartialEq, structopt::StructOpt)]
+            enum $name {
+                #[$meta]
+                $var($inner),
+            }
+        };
+    }
+
+    Command! {GitCmd, [
+      #[structopt(external_subcommand)]
+      Ext(Vec<String>)
+    ]}
+}
diff --git a/tests/rename_all_env.rs b/tests/rename_all_env.rs
old mode 100755
new mode 100644
diff --git a/tests/skip.rs b/tests/skip.rs
old mode 100755
new mode 100644
diff --git a/tests/special_types.rs b/tests/special_types.rs
old mode 100755
new mode 100644
diff --git a/tests/subcommands.rs b/tests/subcommands.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/bool_default_value.rs b/tests/ui/bool_default_value.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/bool_default_value.stderr b/tests/ui/bool_default_value.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/bool_required.rs b/tests/ui/bool_required.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/bool_required.stderr b/tests/ui/bool_required.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/enum_flatten.rs b/tests/ui/enum_flatten.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/enum_flatten.stderr b/tests/ui/enum_flatten.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/external_subcommand_wrong_type.rs b/tests/ui/external_subcommand_wrong_type.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/external_subcommand_wrong_type.stderr b/tests/ui/external_subcommand_wrong_type.stderr
old mode 100755
new mode 100644
index 1966225..73f12d2
--- a/tests/ui/external_subcommand_wrong_type.stderr
+++ b/tests/ui/external_subcommand_wrong_type.stderr
@@ -2,7 +2,7 @@
   --> $DIR/external_subcommand_wrong_type.rs:13:15
    |
 13 |     Other(Vec<CString>)
-   |               ^^^^^^^ expected struct `std::ffi::CString`, found struct `std::ffi::OsString`
+   |               ^^^^^^^ expected struct `CString`, found struct `OsString`
    |
-   = note: expected struct `std::vec::Vec<std::ffi::CString>`
-              found struct `std::vec::Vec<std::ffi::OsString>`
+   = note: expected struct `Vec<CString>`
+              found struct `Vec<OsString>`
diff --git a/tests/ui/flatten_and_methods.rs b/tests/ui/flatten_and_methods.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/flatten_and_methods.stderr b/tests/ui/flatten_and_methods.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/flatten_and_parse.rs b/tests/ui/flatten_and_parse.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/flatten_and_parse.stderr b/tests/ui/flatten_and_parse.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/multiple_external_subcommand.rs b/tests/ui/multiple_external_subcommand.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/multiple_external_subcommand.stderr b/tests/ui/multiple_external_subcommand.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/non_existent_attr.rs b/tests/ui/non_existent_attr.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/non_existent_attr.stderr b/tests/ui/non_existent_attr.stderr
old mode 100755
new mode 100644
index e5edb56..61f784e
--- a/tests/ui/non_existent_attr.stderr
+++ b/tests/ui/non_existent_attr.stderr
@@ -1,5 +1,5 @@
-error[E0599]: no method named `non_existing_attribute` found for struct `structopt::clap::Arg<'_, '_>` in the current scope
+error[E0599]: no method named `non_existing_attribute` found for struct `Arg<'_, '_>` in the current scope
   --> $DIR/non_existent_attr.rs:14:24
    |
 14 |     #[structopt(short, non_existing_attribute = 1)]
-   |                        ^^^^^^^^^^^^^^^^^^^^^^ method not found in `structopt::clap::Arg<'_, '_>`
+   |                        ^^^^^^^^^^^^^^^^^^^^^^ method not found in `Arg<'_, '_>`
diff --git a/tests/ui/opt_opt_nonpositional.rs b/tests/ui/opt_opt_nonpositional.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/opt_opt_nonpositional.stderr b/tests/ui/opt_opt_nonpositional.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/opt_vec_nonpositional.rs b/tests/ui/opt_vec_nonpositional.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/opt_vec_nonpositional.stderr b/tests/ui/opt_vec_nonpositional.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/option_default_value.rs b/tests/ui/option_default_value.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/option_default_value.stderr b/tests/ui/option_default_value.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/option_required.rs b/tests/ui/option_required.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/option_required.stderr b/tests/ui/option_required.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_empty_try_from_os.rs b/tests/ui/parse_empty_try_from_os.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_empty_try_from_os.stderr b/tests/ui/parse_empty_try_from_os.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_function_is_not_path.rs b/tests/ui/parse_function_is_not_path.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_function_is_not_path.stderr b/tests/ui/parse_function_is_not_path.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_literal_spec.rs b/tests/ui/parse_literal_spec.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_literal_spec.stderr b/tests/ui/parse_literal_spec.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_not_zero_args.rs b/tests/ui/parse_not_zero_args.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/parse_not_zero_args.stderr b/tests/ui/parse_not_zero_args.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/positional_bool.rs b/tests/ui/positional_bool.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/positional_bool.stderr b/tests/ui/positional_bool.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/raw.rs b/tests/ui/raw.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/raw.stderr b/tests/ui/raw.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/rename_all_wrong_casing.rs b/tests/ui/rename_all_wrong_casing.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/rename_all_wrong_casing.stderr b/tests/ui/rename_all_wrong_casing.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_flatten.rs b/tests/ui/skip_flatten.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_flatten.stderr b/tests/ui/skip_flatten.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_subcommand.rs b/tests/ui/skip_subcommand.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_subcommand.stderr b/tests/ui/skip_subcommand.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_with_other_options.rs b/tests/ui/skip_with_other_options.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_with_other_options.stderr b/tests/ui/skip_with_other_options.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_without_default.rs b/tests/ui/skip_without_default.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/skip_without_default.stderr b/tests/ui/skip_without_default.stderr
old mode 100755
new mode 100644
index 330898f..b5d702a
--- a/tests/ui/skip_without_default.stderr
+++ b/tests/ui/skip_without_default.stderr
@@ -1,9 +1,7 @@
-error[E0277]: the trait bound `Kind: std::default::Default` is not satisfied
+error[E0277]: the trait bound `Kind: Default` is not satisfied
   --> $DIR/skip_without_default.rs:22:17
    |
 22 |     #[structopt(skip)]
-   |                 ^^^^ the trait `std::default::Default` is not implemented for `Kind`
+   |                 ^^^^ the trait `Default` is not implemented for `Kind`
    |
    = note: required by `std::default::Default::default`
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/struct_parse.rs b/tests/ui/struct_parse.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/struct_parse.stderr b/tests/ui/struct_parse.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/struct_subcommand.rs b/tests/ui/struct_subcommand.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/struct_subcommand.stderr b/tests/ui/struct_subcommand.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/structopt_empty_attr.rs b/tests/ui/structopt_empty_attr.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/structopt_empty_attr.stderr b/tests/ui/structopt_empty_attr.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/structopt_name_value_attr.rs b/tests/ui/structopt_name_value_attr.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/structopt_name_value_attr.stderr b/tests/ui/structopt_name_value_attr.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_and_flatten.rs b/tests/ui/subcommand_and_flatten.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_and_flatten.stderr b/tests/ui/subcommand_and_flatten.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_and_methods.rs b/tests/ui/subcommand_and_methods.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_and_methods.stderr b/tests/ui/subcommand_and_methods.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_and_parse.rs b/tests/ui/subcommand_and_parse.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_and_parse.stderr b/tests/ui/subcommand_and_parse.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_opt_opt.rs b/tests/ui/subcommand_opt_opt.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_opt_opt.stderr b/tests/ui/subcommand_opt_opt.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_opt_vec.rs b/tests/ui/subcommand_opt_vec.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/subcommand_opt_vec.stderr b/tests/ui/subcommand_opt_vec.stderr
old mode 100755
new mode 100644
diff --git a/tests/ui/tuple_struct.rs b/tests/ui/tuple_struct.rs
old mode 100755
new mode 100644
diff --git a/tests/ui/tuple_struct.stderr b/tests/ui/tuple_struct.stderr
old mode 100755
new mode 100644
diff --git a/tests/utils.rs b/tests/utils.rs
old mode 100755
new mode 100644
diff --git a/tests/we_need_syn_full.rs b/tests/we_need_syn_full.rs
old mode 100755
new mode 100644