From b6df23dc1424d7ef3ec24e2157ed4b5bf654dd54 Mon Sep 17 00:00:00 2001 From: plaflamme Date: Sun, 6 Mar 2022 22:50:23 -0500 Subject: [PATCH] fix: Multiple defaults combined with ArgEnum --- src/build/debug_asserts.rs | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/build/debug_asserts.rs b/src/build/debug_asserts.rs index e811db01e4c..5e6baf66644 100644 --- a/src/build/debug_asserts.rs +++ b/src/build/debug_asserts.rs @@ -675,15 +675,29 @@ fn assert_defaults<'d>( for default_os in defaults { if let Some(default_s) = default_os.to_str() { if !arg.possible_vals.is_empty() { - assert!( - arg.possible_vals.iter().any(|possible_val| { - possible_val.matches(default_s, arg.is_ignore_case_set()) - }), - "Argument `{}`'s {}={} doesn't match possible values", - arg.name, - field, - default_s - ); + if let Some(delim) = arg.get_value_delimiter() { + for part in default_s.split(delim) { + assert!( + arg.possible_vals.iter().any(|possible_val| { + possible_val.matches(part, arg.is_ignore_case_set()) + }), + "Argument `{}`'s {}={} doesn't match possible values", + arg.name, + field, + part + ) + } + } else { + assert!( + arg.possible_vals.iter().any(|possible_val| { + possible_val.matches(default_s, arg.is_ignore_case_set()) + }), + "Argument `{}`'s {}={} doesn't match possible values", + arg.name, + field, + default_s + ); + } } if let Some(validator) = arg.validator.as_ref() {