aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChih-Hung Hsieh <chh@google.com>2020-10-26 13:16:51 -0700
committerChih-Hung Hsieh <chh@google.com>2020-10-26 13:16:51 -0700
commitbe338a19d42a8ec7a2cfe5bc29992a0f1de0b5ee (patch)
tree19c49bb42fdce1dcb2d93119133070d37c715a68
parentb1b8eb991122479f47f3b4bac34db5b1b567f307 (diff)
downloadstructopt-be338a19d42a8ec7a2cfe5bc29992a0f1de0b5ee.tar.gz
Upgrade rust/crates/structopt to 0.3.20
Test: make Change-Id: I50a53b96c652aea7c84a572a87578cf3828c00e2
-rw-r--r--.cargo_vcs_info.json2
-rwxr-xr-x[-rw-r--r--].gitignore0
-rwxr-xr-x[-rw-r--r--].travis.yml0
-rw-r--r--Android.bp16
-rwxr-xr-x[-rw-r--r--]CHANGELOG.md10
-rw-r--r--Cargo.toml4
-rwxr-xr-x[-rw-r--r--]Cargo.toml.orig4
-rwxr-xr-x[-rw-r--r--]LICENSE-APACHE0
-rwxr-xr-x[-rw-r--r--]LICENSE-MIT0
-rw-r--r--METADATA8
-rwxr-xr-x[-rw-r--r--]README.md0
-rwxr-xr-x[-rw-r--r--]examples/README.md0
-rwxr-xr-x[-rw-r--r--]examples/after_help.rs0
-rwxr-xr-x[-rw-r--r--]examples/at_least_two.rs0
-rwxr-xr-x[-rw-r--r--]examples/basic.rs0
-rwxr-xr-x[-rw-r--r--]examples/deny_missing_docs.rs0
-rwxr-xr-x[-rw-r--r--]examples/doc_comments.rs0
-rwxr-xr-x[-rw-r--r--]examples/enum_in_args.rs0
-rwxr-xr-x[-rw-r--r--]examples/enum_tuple.rs0
-rwxr-xr-x[-rw-r--r--]examples/env.rs0
-rwxr-xr-x[-rw-r--r--]examples/example.rs0
-rwxr-xr-x[-rw-r--r--]examples/flatten.rs0
-rwxr-xr-x[-rw-r--r--]examples/gen_completions.rs0
-rwxr-xr-x[-rw-r--r--]examples/git.rs0
-rwxr-xr-x[-rw-r--r--]examples/group.rs0
-rwxr-xr-x[-rw-r--r--]examples/keyvalue.rs0
-rwxr-xr-x[-rw-r--r--]examples/negative_flag.rs0
-rwxr-xr-x[-rw-r--r--]examples/no_version.rs0
-rwxr-xr-x[-rw-r--r--]examples/rename_all.rs0
-rwxr-xr-x[-rw-r--r--]examples/required_if.rs0
-rwxr-xr-x[-rw-r--r--]examples/skip.rs0
-rwxr-xr-x[-rw-r--r--]examples/subcommand_aliases.rs0
-rwxr-xr-x[-rw-r--r--]examples/true_or_false.rs0
-rwxr-xr-x[-rw-r--r--]link-check-headers.json0
-rwxr-xr-x[-rw-r--r--]src/lib.rs43
-rwxr-xr-x[-rw-r--r--]tests/argument_naming.rs0
-rwxr-xr-x[-rw-r--r--]tests/arguments.rs0
-rwxr-xr-x[-rw-r--r--]tests/author_version_about.rs0
-rwxr-xr-x[-rw-r--r--]tests/custom-string-parsers.rs0
-rwxr-xr-x[-rw-r--r--]tests/default_value.rs0
-rwxr-xr-x[-rw-r--r--]tests/deny-warnings.rs0
-rwxr-xr-x[-rw-r--r--]tests/doc-comments-help.rs0
-rwxr-xr-x[-rw-r--r--]tests/explicit_name_no_renaming.rs0
-rwxr-xr-x[-rw-r--r--]tests/flags.rs0
-rwxr-xr-x[-rw-r--r--]tests/flatten.rs0
-rwxr-xr-x[-rw-r--r--]tests/issues.rs0
-rwxr-xr-x[-rw-r--r--]tests/macro-errors.rs0
-rwxr-xr-x[-rw-r--r--]tests/nested-subcommands.rs0
-rwxr-xr-x[-rw-r--r--]tests/non_literal_attributes.rs0
-rwxr-xr-x[-rw-r--r--]tests/options.rs0
-rwxr-xr-x[-rw-r--r--]tests/privacy.rs0
-rwxr-xr-x[-rw-r--r--]tests/raw_bool_literal.rs0
-rwxr-xr-x[-rw-r--r--]tests/raw_idents.rs0
-rwxr-xr-xtests/regressions.rs25
-rwxr-xr-x[-rw-r--r--]tests/rename_all_env.rs0
-rwxr-xr-x[-rw-r--r--]tests/skip.rs0
-rwxr-xr-x[-rw-r--r--]tests/special_types.rs0
-rwxr-xr-x[-rw-r--r--]tests/subcommands.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/bool_default_value.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/bool_default_value.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/bool_required.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/bool_required.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/enum_flatten.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/enum_flatten.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/external_subcommand_wrong_type.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/external_subcommand_wrong_type.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/flatten_and_methods.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/flatten_and_methods.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/flatten_and_parse.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/flatten_and_parse.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/multiple_external_subcommand.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/multiple_external_subcommand.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/non_existent_attr.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/non_existent_attr.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/opt_opt_nonpositional.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/opt_opt_nonpositional.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/opt_vec_nonpositional.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/opt_vec_nonpositional.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/option_default_value.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/option_default_value.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/option_required.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/option_required.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_empty_try_from_os.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_empty_try_from_os.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_function_is_not_path.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_function_is_not_path.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_literal_spec.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_literal_spec.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_not_zero_args.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/parse_not_zero_args.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/positional_bool.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/positional_bool.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/raw.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/raw.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/rename_all_wrong_casing.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/rename_all_wrong_casing.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_flatten.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_flatten.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_subcommand.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_subcommand.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_with_other_options.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_with_other_options.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_without_default.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/skip_without_default.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/struct_parse.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/struct_parse.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/struct_subcommand.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/struct_subcommand.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/structopt_empty_attr.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/structopt_empty_attr.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/structopt_name_value_attr.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/structopt_name_value_attr.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_and_flatten.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_and_flatten.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_and_methods.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_and_methods.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_and_parse.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_and_parse.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_opt_opt.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_opt_opt.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_opt_vec.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/subcommand_opt_vec.stderr0
-rwxr-xr-x[-rw-r--r--]tests/ui/tuple_struct.rs0
-rwxr-xr-x[-rw-r--r--]tests/ui/tuple_struct.stderr0
-rwxr-xr-x[-rw-r--r--]tests/utils.rs0
-rwxr-xr-x[-rw-r--r--]tests/we_need_syn_full.rs0
126 files changed, 76 insertions, 36 deletions
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index bb978e8..ae54c03 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
{
"git": {
- "sha1": "ff542c67023cbddbb2198df4087abc6aa6c8d5b7"
+ "sha1": "6fa8d68298eab6b4eb94b4b40ce64992b20c7263"
}
}
diff --git a/.gitignore b/.gitignore
index 4467abb..4467abb 100644..100755
--- a/.gitignore
+++ b/.gitignore
diff --git a/.travis.yml b/.travis.yml
index 14f5a6c..14f5a6c 100644..100755
--- a/.travis.yml
+++ b/.travis.yml
diff --git a/Android.bp b/Android.bp
index 595a2f2..790b4ff 100644
--- a/Android.bp
+++ b/Android.bp
@@ -6,16 +6,12 @@ rust_library {
crate_name: "structopt",
srcs: ["src/lib.rs"],
edition: "2018",
- features: [
- "default",
- ],
+ features: ["default"],
rustlibs: [
"libclap",
"liblazy_static",
],
- proc_macros: [
- "libstructopt_derive",
- ],
+ proc_macros: ["libstructopt_derive"],
}
// dependent_library ["feature_list"]
@@ -25,14 +21,14 @@ rust_library {
// clap-2.33.3 "ansi_term,atty,color,default,strsim,suggestions,vec_map"
// heck-0.3.1
// lazy_static-1.4.0
-// libc-0.2.77
+// libc-0.2.80
// proc-macro-error-1.0.4 "default,syn,syn-error"
// proc-macro-error-attr-1.0.4
-// proc-macro2-1.0.21 "default,proc-macro"
+// proc-macro2-1.0.24 "default,proc-macro"
// quote-1.0.7 "default,proc-macro"
// strsim-0.8.0
-// structopt-derive-0.4.11
-// syn-1.0.41 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote,visit"
+// structopt-derive-0.4.13
+// syn-1.0.48 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote,visit"
// textwrap-0.11.0
// unicode-segmentation-1.6.0
// unicode-width-0.1.8 "default"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ae28950..ccdde68 100644..100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+# v0.3.20 (2020-10-12)
+
+* Fixed [a breakage](https://github.com/TeXitoi/structopt/issues/439)
+ when the struct is placed inside a `macro_rules!` macro.
+
+# v0.3.19 (2020-10-08)
+
+* Added [StructOpt::from_args_safe](https://docs.rs/structopt/0.3/structopt/trait.StructOpt.html#tymethod.from_args_safe) as a shortcut for `StructOpt::from_iter_safe(std::env::args_os())`.
+* Some links in documentation have been corrected.
+
# v0.3.18 (2020-09-23)
* Unsafe code [has been forbidden](https://github.com/TeXitoi/structopt/issues/432). This makes
diff --git a/Cargo.toml b/Cargo.toml
index 0b796d0..8ccdd09 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,7 +13,7 @@
[package]
edition = "2018"
name = "structopt"
-version = "0.3.18"
+version = "0.3.20"
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 @@ optional = true
package = "paw"
[dependencies.structopt-derive]
-version = "=0.4.11"
+version = "=0.4.13"
[dev-dependencies.rustversion]
version = "1"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 9fc207a..7c4efaf 100644..100755
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
[package]
name = "structopt"
-version = "0.3.18"
+version = "0.3.20"
edition = "2018"
authors = ["Guillaume Pinot <texitoi@texitoi.eu>", "others"]
description = "Parse command line argument by defining a struct."
@@ -28,7 +28,7 @@ travis-ci = { repository = "TeXitoi/structopt" }
[dependencies]
clap = { version = "2.33", default-features = false }
-structopt-derive = { path = "structopt-derive", version = "=0.4.11" }
+structopt-derive = { path = "structopt-derive", version = "=0.4.13" }
lazy_static = "1.4.0"
paw_dep = { version = "1", optional = true, package = "paw" }
diff --git a/LICENSE-APACHE b/LICENSE-APACHE
index 261eeb9..261eeb9 100644..100755
--- a/LICENSE-APACHE
+++ b/LICENSE-APACHE
diff --git a/LICENSE-MIT b/LICENSE-MIT
index e931b83..e931b83 100644..100755
--- a/LICENSE-MIT
+++ b/LICENSE-MIT
diff --git a/METADATA b/METADATA
index b6bc6ff..b4901c8 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@ third_party {
}
url {
type: ARCHIVE
- value: "https://static.crates.io/crates/structopt/structopt-0.3.18.crate"
+ value: "https://static.crates.io/crates/structopt/structopt-0.3.20.crate"
}
- version: "0.3.18"
+ version: "0.3.20"
license_type: NOTICE
last_upgrade_date {
year: 2020
- month: 9
- day: 23
+ month: 10
+ day: 26
}
}
diff --git a/README.md b/README.md
index 6609488..6609488 100644..100755
--- a/README.md
+++ b/README.md
diff --git a/examples/README.md b/examples/README.md
index b485393..b485393 100644..100755
--- a/examples/README.md
+++ b/examples/README.md
diff --git a/examples/after_help.rs b/examples/after_help.rs
index db2845f..db2845f 100644..100755
--- a/examples/after_help.rs
+++ b/examples/after_help.rs
diff --git a/examples/at_least_two.rs b/examples/at_least_two.rs
index 683db50..683db50 100644..100755
--- a/examples/at_least_two.rs
+++ b/examples/at_least_two.rs
diff --git a/examples/basic.rs b/examples/basic.rs
index 510e0e0..510e0e0 100644..100755
--- a/examples/basic.rs
+++ b/examples/basic.rs
diff --git a/examples/deny_missing_docs.rs b/examples/deny_missing_docs.rs
index 82b1e63..82b1e63 100644..100755
--- a/examples/deny_missing_docs.rs
+++ b/examples/deny_missing_docs.rs
diff --git a/examples/doc_comments.rs b/examples/doc_comments.rs
index 810101f..810101f 100644..100755
--- a/examples/doc_comments.rs
+++ b/examples/doc_comments.rs
diff --git a/examples/enum_in_args.rs b/examples/enum_in_args.rs
index 70347da..70347da 100644..100755
--- a/examples/enum_in_args.rs
+++ b/examples/enum_in_args.rs
diff --git a/examples/enum_tuple.rs b/examples/enum_tuple.rs
index 0bad2e6..0bad2e6 100644..100755
--- a/examples/enum_tuple.rs
+++ b/examples/enum_tuple.rs
diff --git a/examples/env.rs b/examples/env.rs
index 0477089..0477089 100644..100755
--- a/examples/env.rs
+++ b/examples/env.rs
diff --git a/examples/example.rs b/examples/example.rs
index 7a9a514..7a9a514 100644..100755
--- a/examples/example.rs
+++ b/examples/example.rs
diff --git a/examples/flatten.rs b/examples/flatten.rs
index d51647f..d51647f 100644..100755
--- a/examples/flatten.rs
+++ b/examples/flatten.rs
diff --git a/examples/gen_completions.rs b/examples/gen_completions.rs
index 4f35b07..4f35b07 100644..100755
--- a/examples/gen_completions.rs
+++ b/examples/gen_completions.rs
diff --git a/examples/git.rs b/examples/git.rs
index 494e9d1..494e9d1 100644..100755
--- a/examples/git.rs
+++ b/examples/git.rs
diff --git a/examples/group.rs b/examples/group.rs
index d53de6a..d53de6a 100644..100755
--- a/examples/group.rs
+++ b/examples/group.rs
diff --git a/examples/keyvalue.rs b/examples/keyvalue.rs
index 12ce6fc..12ce6fc 100644..100755
--- a/examples/keyvalue.rs
+++ b/examples/keyvalue.rs
diff --git a/examples/negative_flag.rs b/examples/negative_flag.rs
index b178bf5..b178bf5 100644..100755
--- a/examples/negative_flag.rs
+++ b/examples/negative_flag.rs
diff --git a/examples/no_version.rs b/examples/no_version.rs
index a542ec1..a542ec1 100644..100755
--- a/examples/no_version.rs
+++ b/examples/no_version.rs
diff --git a/examples/rename_all.rs b/examples/rename_all.rs
index c7c3538..c7c3538 100644..100755
--- a/examples/rename_all.rs
+++ b/examples/rename_all.rs
diff --git a/examples/required_if.rs b/examples/required_if.rs
index cb6b414..cb6b414 100644..100755
--- a/examples/required_if.rs
+++ b/examples/required_if.rs
diff --git a/examples/skip.rs b/examples/skip.rs
index 1f44769..1f44769 100644..100755
--- a/examples/skip.rs
+++ b/examples/skip.rs
diff --git a/examples/subcommand_aliases.rs b/examples/subcommand_aliases.rs
index 30b8cc3..30b8cc3 100644..100755
--- a/examples/subcommand_aliases.rs
+++ b/examples/subcommand_aliases.rs
diff --git a/examples/true_or_false.rs b/examples/true_or_false.rs
index 31a543e..31a543e 100644..100755
--- a/examples/true_or_false.rs
+++ b/examples/true_or_false.rs
diff --git a/link-check-headers.json b/link-check-headers.json
index c1bb248..c1bb248 100644..100755
--- a/link-check-headers.json
+++ b/link-check-headers.json
diff --git a/src/lib.rs b/src/lib.rs
index c51277a..fb4ad85 100644..100755
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -309,7 +309,7 @@
//!
//! Usable only on field-level.
//!
-//! - [`rename_all_env`](##auto-deriving-environment-variables):
+//! - [`rename_all_env`](#auto-deriving-environment-variables):
//! [`rename_all_env = "kebab"/"snake"/"screaming-snake"/"camel"/"pascal"/"verbatim"/"lower"/"upper"]`
//!
//! Usable both on top level and field level.
@@ -533,7 +533,7 @@
//!
//! ### `long_help` and `--help`
//!
-//! A message passed to [`App::long_help`] or [`Arg::long_about`] will be displayed whenever
+//! A message passed to [`App::long_about`] or [`Arg::long_help`] will be displayed whenever
//! your program is called with `--help` instead of `-h`. Of course, you can
//! use them via raw methods as described [above](#help-messages).
//!
@@ -586,8 +586,8 @@
//!
//! The `-h` flag is not the same as `--help`.
//!
-//! -h corresponds to Arg::help/App::about and requests short "summary" messages
-//! while --help corresponds to Arg::long_help/App::long_about and requests more
+//! -h corresponds to `Arg::help/App::about` and requests short "summary" messages
+//! while --help corresponds to `Arg::long_help/App::long_about` and requests more
//! detailed, descriptive messages.
//!
//! It is entirely up to `clap` what happens if you used only one of
@@ -1073,15 +1073,16 @@ pub use lazy_static;
/// A struct that is converted from command line arguments.
pub trait StructOpt {
- /// Returns the corresponding `clap::App`.
+ /// Returns [`clap::App`] corresponding to the struct.
fn clap<'a, 'b>() -> clap::App<'a, 'b>;
- /// Creates the struct from `clap::ArgMatches`. It cannot fail
- /// with a parameter generated by `clap` by construction.
+ /// Builds the struct from [`clap::ArgMatches`]. It's guaranteed to succeed
+ /// if `matches` originates from an `App` generated by [`StructOpt::clap`] called on
+ /// the same type, otherwise it must panic.
fn from_clap(matches: &clap::ArgMatches<'_>) -> Self;
- /// Gets the struct from the command line arguments. Print the
- /// error message and quit the program in case of failure.
+ /// Builds the struct from the command line arguments ([`std::env::args_os`]).
+ /// Calls [`clap::Error::exit`] on failure, printing the error message and aborting the program.
fn from_args() -> Self
where
Self: Sized,
@@ -1089,13 +1090,23 @@ pub trait StructOpt {
Self::from_clap(&Self::clap().get_matches())
}
+ /// Builds the struct from the command line arguments ([`std::env::args_os`]).
+ /// Unlike [`StructOpt::from_args`], returns [`clap::Error`] on failure instead of aborting the program,
+ /// so calling [`.exit`][clap::Error::exit] is up to you.
+ fn from_args_safe() -> Result<Self, clap::Error>
+ where
+ Self: Sized,
+ {
+ Self::clap()
+ .get_matches_safe()
+ .map(|matches| Self::from_clap(&matches))
+ }
+
/// Gets the struct from any iterator such as a `Vec` of your making.
/// Print the error message and quit the program in case of failure.
///
/// **NOTE**: The first argument will be parsed as the binary name unless
- /// [`AppSettings::NoBinaryName`] has been used.
- ///
- /// [`AppSettings::NoBinaryName`]: https://docs.rs/clap/2.33.0/clap/enum.AppSettings.html#variant.NoBinaryName
+ /// [`clap::AppSettings::NoBinaryName`] has been used.
fn from_iter<I>(iter: I) -> Self
where
Self: Sized,
@@ -1107,14 +1118,12 @@ pub trait StructOpt {
/// Gets the struct from any iterator such as a `Vec` of your making.
///
- /// Returns a `clap::Error` in case of failure. This does *not* exit in the
+ /// Returns a [`clap::Error`] in case of failure. This does *not* exit in the
/// case of `--help` or `--version`, to achieve the same behavior as
- /// `from_iter()` you must call `.exit()` on the error value.
+ /// [`from_iter()`][StructOpt::from_iter] you must call [`.exit()`][clap::Error::exit] on the error value.
///
/// **NOTE**: The first argument will be parsed as the binary name unless
- /// [`AppSettings::NoBinaryName`] has been used.
- ///
- /// [`AppSettings::NoBinaryName`]: https://docs.rs/clap/2.33.0/clap/enum.AppSettings.html#variant.NoBinaryName
+ /// [`clap::AppSettings::NoBinaryName`] has been used.
fn from_iter_safe<I>(iter: I) -> Result<Self, clap::Error>
where
Self: Sized,
diff --git a/tests/argument_naming.rs b/tests/argument_naming.rs
index 88b549d..88b549d 100644..100755
--- a/tests/argument_naming.rs
+++ b/tests/argument_naming.rs
diff --git a/tests/arguments.rs b/tests/arguments.rs
index 96a0938..96a0938 100644..100755
--- a/tests/arguments.rs
+++ b/tests/arguments.rs
diff --git a/tests/author_version_about.rs b/tests/author_version_about.rs
index 0f1c8b5..0f1c8b5 100644..100755
--- a/tests/author_version_about.rs
+++ b/tests/author_version_about.rs
diff --git a/tests/custom-string-parsers.rs b/tests/custom-string-parsers.rs
index 89070ed..89070ed 100644..100755
--- a/tests/custom-string-parsers.rs
+++ b/tests/custom-string-parsers.rs
diff --git a/tests/default_value.rs b/tests/default_value.rs
index 383bd23..383bd23 100644..100755
--- a/tests/default_value.rs
+++ b/tests/default_value.rs
diff --git a/tests/deny-warnings.rs b/tests/deny-warnings.rs
index 721204a..721204a 100644..100755
--- a/tests/deny-warnings.rs
+++ b/tests/deny-warnings.rs
diff --git a/tests/doc-comments-help.rs b/tests/doc-comments-help.rs
index 1d31683..1d31683 100644..100755
--- a/tests/doc-comments-help.rs
+++ b/tests/doc-comments-help.rs
diff --git a/tests/explicit_name_no_renaming.rs b/tests/explicit_name_no_renaming.rs
index eff7a86..eff7a86 100644..100755
--- a/tests/explicit_name_no_renaming.rs
+++ b/tests/explicit_name_no_renaming.rs
diff --git a/tests/flags.rs b/tests/flags.rs
index 39a5dc3..39a5dc3 100644..100755
--- a/tests/flags.rs
+++ b/tests/flags.rs
diff --git a/tests/flatten.rs b/tests/flatten.rs
index 05de185..05de185 100644..100755
--- a/tests/flatten.rs
+++ b/tests/flatten.rs
diff --git a/tests/issues.rs b/tests/issues.rs
index 8b4ac4b..8b4ac4b 100644..100755
--- a/tests/issues.rs
+++ b/tests/issues.rs
diff --git a/tests/macro-errors.rs b/tests/macro-errors.rs
index 54b405a..54b405a 100644..100755
--- a/tests/macro-errors.rs
+++ b/tests/macro-errors.rs
diff --git a/tests/nested-subcommands.rs b/tests/nested-subcommands.rs
index 1fbd166..1fbd166 100644..100755
--- a/tests/nested-subcommands.rs
+++ b/tests/nested-subcommands.rs
diff --git a/tests/non_literal_attributes.rs b/tests/non_literal_attributes.rs
index 75b6b71..75b6b71 100644..100755
--- a/tests/non_literal_attributes.rs
+++ b/tests/non_literal_attributes.rs
diff --git a/tests/options.rs b/tests/options.rs
index 803abb4..803abb4 100644..100755
--- a/tests/options.rs
+++ b/tests/options.rs
diff --git a/tests/privacy.rs b/tests/privacy.rs
index 730bbce..730bbce 100644..100755
--- a/tests/privacy.rs
+++ b/tests/privacy.rs
diff --git a/tests/raw_bool_literal.rs b/tests/raw_bool_literal.rs
index faf8628..faf8628 100644..100755
--- a/tests/raw_bool_literal.rs
+++ b/tests/raw_bool_literal.rs
diff --git a/tests/raw_idents.rs b/tests/raw_idents.rs
index c00ff66..c00ff66 100644..100755
--- a/tests/raw_idents.rs
+++ b/tests/raw_idents.rs
diff --git a/tests/regressions.rs b/tests/regressions.rs
new file mode 100755
index 0000000..876e7ed
--- /dev/null
+++ b/tests/regressions.rs
@@ -0,0 +1,25 @@
+use structopt::StructOpt;
+
+mod utils;
+use utils::*;
+
+#[test]
+fn invisible_group_issue_439() {
+ macro_rules! m {
+ ($bool:ty) => {
+ #[derive(Debug, StructOpt)]
+ struct Opts {
+ #[structopt(long = "x")]
+ x: $bool,
+ }
+ };
+ }
+
+ m!(bool);
+
+ let help = get_long_help::<Opts>();
+
+ assert!(help.contains("--x"));
+ assert!(!help.contains("--x <x>"));
+ Opts::from_iter_safe(&["test", "--x"]).unwrap();
+}
diff --git a/tests/rename_all_env.rs b/tests/rename_all_env.rs
index 1979e84..1979e84 100644..100755
--- a/tests/rename_all_env.rs
+++ b/tests/rename_all_env.rs
diff --git a/tests/skip.rs b/tests/skip.rs
index 47682d8..47682d8 100644..100755
--- a/tests/skip.rs
+++ b/tests/skip.rs
diff --git a/tests/special_types.rs b/tests/special_types.rs
index ffed5e2..ffed5e2 100644..100755
--- a/tests/special_types.rs
+++ b/tests/special_types.rs
diff --git a/tests/subcommands.rs b/tests/subcommands.rs
index 1fc8e76..1fc8e76 100644..100755
--- a/tests/subcommands.rs
+++ b/tests/subcommands.rs
diff --git a/tests/ui/bool_default_value.rs b/tests/ui/bool_default_value.rs
index 9bdb0c9..9bdb0c9 100644..100755
--- a/tests/ui/bool_default_value.rs
+++ b/tests/ui/bool_default_value.rs
diff --git a/tests/ui/bool_default_value.stderr b/tests/ui/bool_default_value.stderr
index 1e26a2d..1e26a2d 100644..100755
--- a/tests/ui/bool_default_value.stderr
+++ b/tests/ui/bool_default_value.stderr
diff --git a/tests/ui/bool_required.rs b/tests/ui/bool_required.rs
index 018223c..018223c 100644..100755
--- a/tests/ui/bool_required.rs
+++ b/tests/ui/bool_required.rs
diff --git a/tests/ui/bool_required.stderr b/tests/ui/bool_required.stderr
index 0b80d48..0b80d48 100644..100755
--- a/tests/ui/bool_required.stderr
+++ b/tests/ui/bool_required.stderr
diff --git a/tests/ui/enum_flatten.rs b/tests/ui/enum_flatten.rs
index 768de76..768de76 100644..100755
--- a/tests/ui/enum_flatten.rs
+++ b/tests/ui/enum_flatten.rs
diff --git a/tests/ui/enum_flatten.stderr b/tests/ui/enum_flatten.stderr
index d74fa85..d74fa85 100644..100755
--- a/tests/ui/enum_flatten.stderr
+++ b/tests/ui/enum_flatten.stderr
diff --git a/tests/ui/external_subcommand_wrong_type.rs b/tests/ui/external_subcommand_wrong_type.rs
index ad62e73..ad62e73 100644..100755
--- a/tests/ui/external_subcommand_wrong_type.rs
+++ b/tests/ui/external_subcommand_wrong_type.rs
diff --git a/tests/ui/external_subcommand_wrong_type.stderr b/tests/ui/external_subcommand_wrong_type.stderr
index 1966225..1966225 100644..100755
--- a/tests/ui/external_subcommand_wrong_type.stderr
+++ b/tests/ui/external_subcommand_wrong_type.stderr
diff --git a/tests/ui/flatten_and_methods.rs b/tests/ui/flatten_and_methods.rs
index ff1af2e..ff1af2e 100644..100755
--- a/tests/ui/flatten_and_methods.rs
+++ b/tests/ui/flatten_and_methods.rs
diff --git a/tests/ui/flatten_and_methods.stderr b/tests/ui/flatten_and_methods.stderr
index 77d97ae..77d97ae 100644..100755
--- a/tests/ui/flatten_and_methods.stderr
+++ b/tests/ui/flatten_and_methods.stderr
diff --git a/tests/ui/flatten_and_parse.rs b/tests/ui/flatten_and_parse.rs
index 3317272..3317272 100644..100755
--- a/tests/ui/flatten_and_parse.rs
+++ b/tests/ui/flatten_and_parse.rs
diff --git a/tests/ui/flatten_and_parse.stderr b/tests/ui/flatten_and_parse.stderr
index e217a84..e217a84 100644..100755
--- a/tests/ui/flatten_and_parse.stderr
+++ b/tests/ui/flatten_and_parse.stderr
diff --git a/tests/ui/multiple_external_subcommand.rs b/tests/ui/multiple_external_subcommand.rs
index 986261b..986261b 100644..100755
--- a/tests/ui/multiple_external_subcommand.rs
+++ b/tests/ui/multiple_external_subcommand.rs
diff --git a/tests/ui/multiple_external_subcommand.stderr b/tests/ui/multiple_external_subcommand.stderr
index 0c80c2e..0c80c2e 100644..100755
--- a/tests/ui/multiple_external_subcommand.stderr
+++ b/tests/ui/multiple_external_subcommand.stderr
diff --git a/tests/ui/non_existent_attr.rs b/tests/ui/non_existent_attr.rs
index 96daf45..96daf45 100644..100755
--- a/tests/ui/non_existent_attr.rs
+++ b/tests/ui/non_existent_attr.rs
diff --git a/tests/ui/non_existent_attr.stderr b/tests/ui/non_existent_attr.stderr
index e5edb56..e5edb56 100644..100755
--- a/tests/ui/non_existent_attr.stderr
+++ b/tests/ui/non_existent_attr.stderr
diff --git a/tests/ui/opt_opt_nonpositional.rs b/tests/ui/opt_opt_nonpositional.rs
index 2a08105..2a08105 100644..100755
--- a/tests/ui/opt_opt_nonpositional.rs
+++ b/tests/ui/opt_opt_nonpositional.rs
diff --git a/tests/ui/opt_opt_nonpositional.stderr b/tests/ui/opt_opt_nonpositional.stderr
index cb9f172..cb9f172 100644..100755
--- a/tests/ui/opt_opt_nonpositional.stderr
+++ b/tests/ui/opt_opt_nonpositional.stderr
diff --git a/tests/ui/opt_vec_nonpositional.rs b/tests/ui/opt_vec_nonpositional.rs
index 0f6f078..0f6f078 100644..100755
--- a/tests/ui/opt_vec_nonpositional.rs
+++ b/tests/ui/opt_vec_nonpositional.rs
diff --git a/tests/ui/opt_vec_nonpositional.stderr b/tests/ui/opt_vec_nonpositional.stderr
index c6b343f..c6b343f 100644..100755
--- a/tests/ui/opt_vec_nonpositional.stderr
+++ b/tests/ui/opt_vec_nonpositional.stderr
diff --git a/tests/ui/option_default_value.rs b/tests/ui/option_default_value.rs
index a86bc0e..a86bc0e 100644..100755
--- a/tests/ui/option_default_value.rs
+++ b/tests/ui/option_default_value.rs
diff --git a/tests/ui/option_default_value.stderr b/tests/ui/option_default_value.stderr
index 2215497..2215497 100644..100755
--- a/tests/ui/option_default_value.stderr
+++ b/tests/ui/option_default_value.stderr
diff --git a/tests/ui/option_required.rs b/tests/ui/option_required.rs
index d91afbf..d91afbf 100644..100755
--- a/tests/ui/option_required.rs
+++ b/tests/ui/option_required.rs
diff --git a/tests/ui/option_required.stderr b/tests/ui/option_required.stderr
index 0230d57..0230d57 100644..100755
--- a/tests/ui/option_required.stderr
+++ b/tests/ui/option_required.stderr
diff --git a/tests/ui/parse_empty_try_from_os.rs b/tests/ui/parse_empty_try_from_os.rs
index acfef0b..acfef0b 100644..100755
--- a/tests/ui/parse_empty_try_from_os.rs
+++ b/tests/ui/parse_empty_try_from_os.rs
diff --git a/tests/ui/parse_empty_try_from_os.stderr b/tests/ui/parse_empty_try_from_os.stderr
index 3dc9f24..3dc9f24 100644..100755
--- a/tests/ui/parse_empty_try_from_os.stderr
+++ b/tests/ui/parse_empty_try_from_os.stderr
diff --git a/tests/ui/parse_function_is_not_path.rs b/tests/ui/parse_function_is_not_path.rs
index 5eebc57..5eebc57 100644..100755
--- a/tests/ui/parse_function_is_not_path.rs
+++ b/tests/ui/parse_function_is_not_path.rs
diff --git a/tests/ui/parse_function_is_not_path.stderr b/tests/ui/parse_function_is_not_path.stderr
index 7cf7444..7cf7444 100644..100755
--- a/tests/ui/parse_function_is_not_path.stderr
+++ b/tests/ui/parse_function_is_not_path.stderr
diff --git a/tests/ui/parse_literal_spec.rs b/tests/ui/parse_literal_spec.rs
index b6f125a..b6f125a 100644..100755
--- a/tests/ui/parse_literal_spec.rs
+++ b/tests/ui/parse_literal_spec.rs
diff --git a/tests/ui/parse_literal_spec.stderr b/tests/ui/parse_literal_spec.stderr
index 6e99e8b..6e99e8b 100644..100755
--- a/tests/ui/parse_literal_spec.stderr
+++ b/tests/ui/parse_literal_spec.stderr
diff --git a/tests/ui/parse_not_zero_args.rs b/tests/ui/parse_not_zero_args.rs
index 8729178..8729178 100644..100755
--- a/tests/ui/parse_not_zero_args.rs
+++ b/tests/ui/parse_not_zero_args.rs
diff --git a/tests/ui/parse_not_zero_args.stderr b/tests/ui/parse_not_zero_args.stderr
index 34b99a4..34b99a4 100644..100755
--- a/tests/ui/parse_not_zero_args.stderr
+++ b/tests/ui/parse_not_zero_args.stderr
diff --git a/tests/ui/positional_bool.rs b/tests/ui/positional_bool.rs
index 4dbf538..4dbf538 100644..100755
--- a/tests/ui/positional_bool.rs
+++ b/tests/ui/positional_bool.rs
diff --git a/tests/ui/positional_bool.stderr b/tests/ui/positional_bool.stderr
index c3ed1ad..c3ed1ad 100644..100755
--- a/tests/ui/positional_bool.stderr
+++ b/tests/ui/positional_bool.stderr
diff --git a/tests/ui/raw.rs b/tests/ui/raw.rs
index b94f783..b94f783 100644..100755
--- a/tests/ui/raw.rs
+++ b/tests/ui/raw.rs
diff --git a/tests/ui/raw.stderr b/tests/ui/raw.stderr
index 93b5e38..93b5e38 100644..100755
--- a/tests/ui/raw.stderr
+++ b/tests/ui/raw.stderr
diff --git a/tests/ui/rename_all_wrong_casing.rs b/tests/ui/rename_all_wrong_casing.rs
index 4dabe14..4dabe14 100644..100755
--- a/tests/ui/rename_all_wrong_casing.rs
+++ b/tests/ui/rename_all_wrong_casing.rs
diff --git a/tests/ui/rename_all_wrong_casing.stderr b/tests/ui/rename_all_wrong_casing.stderr
index 2a72080..2a72080 100644..100755
--- a/tests/ui/rename_all_wrong_casing.stderr
+++ b/tests/ui/rename_all_wrong_casing.stderr
diff --git a/tests/ui/skip_flatten.rs b/tests/ui/skip_flatten.rs
index 8668ec2..8668ec2 100644..100755
--- a/tests/ui/skip_flatten.rs
+++ b/tests/ui/skip_flatten.rs
diff --git a/tests/ui/skip_flatten.stderr b/tests/ui/skip_flatten.stderr
index 76477a3..76477a3 100644..100755
--- a/tests/ui/skip_flatten.stderr
+++ b/tests/ui/skip_flatten.stderr
diff --git a/tests/ui/skip_subcommand.rs b/tests/ui/skip_subcommand.rs
index 5d21426..5d21426 100644..100755
--- a/tests/ui/skip_subcommand.rs
+++ b/tests/ui/skip_subcommand.rs
diff --git a/tests/ui/skip_subcommand.stderr b/tests/ui/skip_subcommand.stderr
index aba2d69..aba2d69 100644..100755
--- a/tests/ui/skip_subcommand.stderr
+++ b/tests/ui/skip_subcommand.stderr
diff --git a/tests/ui/skip_with_other_options.rs b/tests/ui/skip_with_other_options.rs
index 73c5342..73c5342 100644..100755
--- a/tests/ui/skip_with_other_options.rs
+++ b/tests/ui/skip_with_other_options.rs
diff --git a/tests/ui/skip_with_other_options.stderr b/tests/ui/skip_with_other_options.stderr
index 3345f92..3345f92 100644..100755
--- a/tests/ui/skip_with_other_options.stderr
+++ b/tests/ui/skip_with_other_options.stderr
diff --git a/tests/ui/skip_without_default.rs b/tests/ui/skip_without_default.rs
index bc47511..bc47511 100644..100755
--- a/tests/ui/skip_without_default.rs
+++ b/tests/ui/skip_without_default.rs
diff --git a/tests/ui/skip_without_default.stderr b/tests/ui/skip_without_default.stderr
index 330898f..330898f 100644..100755
--- a/tests/ui/skip_without_default.stderr
+++ b/tests/ui/skip_without_default.stderr
diff --git a/tests/ui/struct_parse.rs b/tests/ui/struct_parse.rs
index e428b23..e428b23 100644..100755
--- a/tests/ui/struct_parse.rs
+++ b/tests/ui/struct_parse.rs
diff --git a/tests/ui/struct_parse.stderr b/tests/ui/struct_parse.stderr
index 5518214..5518214 100644..100755
--- a/tests/ui/struct_parse.stderr
+++ b/tests/ui/struct_parse.stderr
diff --git a/tests/ui/struct_subcommand.rs b/tests/ui/struct_subcommand.rs
index ac0b145..ac0b145 100644..100755
--- a/tests/ui/struct_subcommand.rs
+++ b/tests/ui/struct_subcommand.rs
diff --git a/tests/ui/struct_subcommand.stderr b/tests/ui/struct_subcommand.stderr
index 438f6f8..438f6f8 100644..100755
--- a/tests/ui/struct_subcommand.stderr
+++ b/tests/ui/struct_subcommand.stderr
diff --git a/tests/ui/structopt_empty_attr.rs b/tests/ui/structopt_empty_attr.rs
index a7fc0b9..a7fc0b9 100644..100755
--- a/tests/ui/structopt_empty_attr.rs
+++ b/tests/ui/structopt_empty_attr.rs
diff --git a/tests/ui/structopt_empty_attr.stderr b/tests/ui/structopt_empty_attr.stderr
index bd3b3ed..bd3b3ed 100644..100755
--- a/tests/ui/structopt_empty_attr.stderr
+++ b/tests/ui/structopt_empty_attr.stderr
diff --git a/tests/ui/structopt_name_value_attr.rs b/tests/ui/structopt_name_value_attr.rs
index 3d9388f..3d9388f 100644..100755
--- a/tests/ui/structopt_name_value_attr.rs
+++ b/tests/ui/structopt_name_value_attr.rs
diff --git a/tests/ui/structopt_name_value_attr.stderr b/tests/ui/structopt_name_value_attr.stderr
index 373a3b8..373a3b8 100644..100755
--- a/tests/ui/structopt_name_value_attr.stderr
+++ b/tests/ui/structopt_name_value_attr.stderr
diff --git a/tests/ui/subcommand_and_flatten.rs b/tests/ui/subcommand_and_flatten.rs
index 742ee6d..742ee6d 100644..100755
--- a/tests/ui/subcommand_and_flatten.rs
+++ b/tests/ui/subcommand_and_flatten.rs
diff --git a/tests/ui/subcommand_and_flatten.stderr b/tests/ui/subcommand_and_flatten.stderr
index cacea5e..cacea5e 100644..100755
--- a/tests/ui/subcommand_and_flatten.stderr
+++ b/tests/ui/subcommand_and_flatten.stderr
diff --git a/tests/ui/subcommand_and_methods.rs b/tests/ui/subcommand_and_methods.rs
index 890f10c..890f10c 100644..100755
--- a/tests/ui/subcommand_and_methods.rs
+++ b/tests/ui/subcommand_and_methods.rs
diff --git a/tests/ui/subcommand_and_methods.stderr b/tests/ui/subcommand_and_methods.stderr
index ccaf28d..ccaf28d 100644..100755
--- a/tests/ui/subcommand_and_methods.stderr
+++ b/tests/ui/subcommand_and_methods.stderr
diff --git a/tests/ui/subcommand_and_parse.rs b/tests/ui/subcommand_and_parse.rs
index f24e4bc..f24e4bc 100644..100755
--- a/tests/ui/subcommand_and_parse.rs
+++ b/tests/ui/subcommand_and_parse.rs
diff --git a/tests/ui/subcommand_and_parse.stderr b/tests/ui/subcommand_and_parse.stderr
index 4070056..4070056 100644..100755
--- a/tests/ui/subcommand_and_parse.stderr
+++ b/tests/ui/subcommand_and_parse.stderr
diff --git a/tests/ui/subcommand_opt_opt.rs b/tests/ui/subcommand_opt_opt.rs
index 1dd84e5..1dd84e5 100644..100755
--- a/tests/ui/subcommand_opt_opt.rs
+++ b/tests/ui/subcommand_opt_opt.rs
diff --git a/tests/ui/subcommand_opt_opt.stderr b/tests/ui/subcommand_opt_opt.stderr
index 25b37e5..25b37e5 100644..100755
--- a/tests/ui/subcommand_opt_opt.stderr
+++ b/tests/ui/subcommand_opt_opt.stderr
diff --git a/tests/ui/subcommand_opt_vec.rs b/tests/ui/subcommand_opt_vec.rs
index 17bffbf..17bffbf 100644..100755
--- a/tests/ui/subcommand_opt_vec.rs
+++ b/tests/ui/subcommand_opt_vec.rs
diff --git a/tests/ui/subcommand_opt_vec.stderr b/tests/ui/subcommand_opt_vec.stderr
index a36071b..a36071b 100644..100755
--- a/tests/ui/subcommand_opt_vec.stderr
+++ b/tests/ui/subcommand_opt_vec.stderr
diff --git a/tests/ui/tuple_struct.rs b/tests/ui/tuple_struct.rs
index af9b1d5..af9b1d5 100644..100755
--- a/tests/ui/tuple_struct.rs
+++ b/tests/ui/tuple_struct.rs
diff --git a/tests/ui/tuple_struct.stderr b/tests/ui/tuple_struct.stderr
index 31705c9..31705c9 100644..100755
--- a/tests/ui/tuple_struct.stderr
+++ b/tests/ui/tuple_struct.stderr
diff --git a/tests/utils.rs b/tests/utils.rs
index c0684a2..c0684a2 100644..100755
--- a/tests/utils.rs
+++ b/tests/utils.rs
diff --git a/tests/we_need_syn_full.rs b/tests/we_need_syn_full.rs
index cc6eca8..cc6eca8 100644..100755
--- a/tests/we_need_syn_full.rs
+++ b/tests/we_need_syn_full.rs