Skip to content

Commit a8f9885

Browse files
committed
refactor(builder): Be more explicit in how takes_values is used
1 parent 67b74fb commit a8f9885

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

clap_builder/src/builder/action.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#[cfg(debug_assertions)]
22
use crate::util::AnyValueId;
33

4+
use crate::builder::ValueRange;
5+
46
/// Behavior of arguments when they are encountered while parsing
57
///
68
/// # Examples
@@ -369,6 +371,20 @@ impl ArgAction {
369371
}
370372
}
371373

374+
pub(crate) fn default_num_args(&self) -> ValueRange {
375+
match self {
376+
Self::Set => ValueRange::SINGLE,
377+
Self::Append => ValueRange::SINGLE,
378+
Self::SetTrue => ValueRange::EMPTY,
379+
Self::SetFalse => ValueRange::EMPTY,
380+
Self::Count => ValueRange::EMPTY,
381+
Self::Help => ValueRange::EMPTY,
382+
Self::HelpShort => ValueRange::EMPTY,
383+
Self::HelpLong => ValueRange::EMPTY,
384+
Self::Version => ValueRange::EMPTY,
385+
}
386+
}
387+
372388
pub(crate) fn default_value(&self) -> Option<&'static std::ffi::OsStr> {
373389
match self {
374390
Self::Set => None,

clap_builder/src/builder/arg.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4546,11 +4546,7 @@ impl Arg {
45464546
if val_names_len > 1 {
45474547
self.num_vals.get_or_insert(val_names_len.into());
45484548
} else {
4549-
let nargs = if self.get_action().takes_values() {
4550-
ValueRange::SINGLE
4551-
} else {
4552-
ValueRange::EMPTY
4553-
};
4549+
let nargs = self.get_action().default_num_args();
45544550
self.num_vals.get_or_insert(nargs);
45554551
}
45564552
}

0 commit comments

Comments
 (0)