Skip to content

Commit 67e7574

Browse files
committed
fix(parser): Fill in defaults on ignored error
This came up in #5812 and is especially problematic for derives.
1 parent 026f188 commit 67e7574

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

clap_builder/src/parser/parser.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,14 @@ impl<'cmd> Parser<'cmd> {
5454
) -> ClapResult<()> {
5555
debug!("Parser::get_matches_with");
5656

57-
ok!(self.parse(matcher, raw_args, args_cursor));
57+
let res = self.parse(matcher, raw_args, args_cursor);
5858

5959
ok!(self.resolve_pending(matcher));
6060
#[cfg(feature = "env")]
6161
ok!(self.add_env(matcher));
6262
ok!(self.add_defaults(matcher));
6363

64+
res?;
6465
Validator::new(self.cmd).validate(matcher)
6566
}
6667

tests/builder/ignore_errors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ fn unexpected_argument() {
113113
m.get_one::<String>("config").cloned(),
114114
Some("config file".to_owned())
115115
);
116-
assert_eq!(m.get_one::<bool>("unset-flag").copied(), None);
116+
assert_eq!(m.get_one::<bool>("unset-flag").copied(), Some(false));
117117
}
118118

119119
#[test]

0 commit comments

Comments
 (0)