diff --git a/src/parse/validator.rs b/src/parse/validator.rs index 8dbd432f..0c50403e 100644 --- a/src/parse/validator.rs +++ b/src/parse/validator.rs @@ -277,7 +277,7 @@ impl<'help, 'app, 'parser> Validator<'help, 'app, 'parser> { .app .unroll_args_in_group(&g.id) .iter() - .filter(|&a| matcher.contains(a)) + .filter(|&a| matcher.contains(a) && !matcher.is_default_value(a)) .count() > 1 }; diff --git a/tests/conflicts.rs b/tests/conflicts.rs index 2d273d26..d2fe9d06 100644 --- a/tests/conflicts.rs +++ b/tests/conflicts.rs @@ -285,6 +285,26 @@ fn group_in_conflicts_with() { assert_eq!(m.value_of("opt"), Some("default")); assert!(m.is_present("flag")); } + +#[test] +fn group_conflicts_with_default_value() { + let result = App::new("conflict") + .arg( + Arg::new("opt") + .long("opt") + .default_value("default") + .group("one"), + ) + .arg(Arg::new("flag").long("flag").group("one")) + .try_get_matches_from(vec!["myprog", "--flag"]); + + assert!(result.is_ok(), "{:?}", result.unwrap()); + let m = result.unwrap(); + + assert_eq!(m.value_of("opt"), Some("default")); + assert!(m.is_present("flag")); +} + #[test] fn group_conflicts_with_default_arg() { let result = App::new("conflict")