From 6354f2af7052cc262060faad7b234b44087ff74b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 6 May 2022 14:15:28 -0500 Subject: [PATCH] fix(assert): Detect conflicting arguments Fixes #3660 --- src/build/debug_asserts.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/build/debug_asserts.rs b/src/build/debug_asserts.rs index cf27de122309..4219bb8beb80 100644 --- a/src/build/debug_asserts.rs +++ b/src/build/debug_asserts.rs @@ -155,6 +155,13 @@ pub(crate) fn assert_app(cmd: &Command) { } for req in &arg.r_ifs { + #[cfg(feature = "unstable-v4")] + { + assert!( + arg.is_required_set(), + "Argument {}: `required` conflicts with `required_if_eq*`" + ); + } assert!( cmd.id_exists(&req.0), "Command {}: Argument or group '{:?}' specified in 'required_if_eq*' for '{}' does not exist", @@ -165,6 +172,13 @@ pub(crate) fn assert_app(cmd: &Command) { } for req in &arg.r_ifs_all { + #[cfg(feature = "unstable-v4")] + { + assert!( + arg.is_required_set(), + "Argument {}: `required` conflicts with `required_if_eq_all`" + ); + } assert!( cmd.id_exists(&req.0), "Command {}: Argument or group '{:?}' specified in 'required_if_eq_all' for '{}' does not exist", @@ -175,6 +189,13 @@ pub(crate) fn assert_app(cmd: &Command) { } for req in &arg.r_unless { + #[cfg(feature = "unstable-v4")] + { + assert!( + arg.is_required_set(), + "Argument {}: `required` conflicts with `required_unless*`" + ); + } assert!( cmd.id_exists(req), "Command {}: Argument or group '{:?}' specified in 'required_unless*' for '{}' does not exist", @@ -185,6 +206,13 @@ pub(crate) fn assert_app(cmd: &Command) { } for req in &arg.r_unless_all { + #[cfg(feature = "unstable-v4")] + { + assert!( + arg.is_required_set(), + "Argument {}: `required` conflicts with `required_unless*`" + ); + } assert!( cmd.id_exists(req), "Command {}: Argument or group '{:?}' specified in 'required_unless*' for '{}' does not exist",