diff --git a/clap_builder/src/builder/debug_asserts.rs b/clap_builder/src/builder/debug_asserts.rs index 7a7fd6ae183..b7bb1ff8329 100644 --- a/clap_builder/src/builder/debug_asserts.rs +++ b/clap_builder/src/builder/debug_asserts.rs @@ -300,6 +300,28 @@ pub(crate) fn assert_app(cmd: &Command) { arg ); } + + for arg in &group.requires { + // Args listed inside groups should exist + assert!( + cmd.id_exists(arg), + "Command {}: Argument group '{}' requires non-existent '{}' id", + cmd.get_name(), + group.get_id(), + arg + ); + } + + for arg in &group.conflicts { + // Args listed inside groups should exist + assert!( + cmd.id_exists(arg), + "Command {}: Argument group '{}' conflicts with non-existent '{}' id", + cmd.get_name(), + group.get_id(), + arg + ); + } } // Conflicts between flags and subcommands diff --git a/clap_builder/src/output/usage.rs b/clap_builder/src/output/usage.rs index dd99c63c7b7..87bb945283d 100644 --- a/clap_builder/src/output/usage.rs +++ b/clap_builder/src/output/usage.rs @@ -439,7 +439,7 @@ impl<'cmd> Usage<'cmd> { required_groups.insert(elem); required_groups_members.extend(group_members); } else { - debug_assert!(self.cmd.find(req).is_some()); + debug_assert!(self.cmd.find(req).is_some(), "`{req}` must exist"); } }