fix(parser): Disambiguate whether built-in subcommands are escaped (unstable) #3703
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When you escape subcommand (
cmd -- subcmd
), it always becomes an external subcommand even if a built-in one matches. There wasn't a way to detect this. Now, a user can checkmatches.is_present("")
and that will signal its an external subcommand.With this change, we've updated
clap_derive
to correctly populate external subcommands rather than the built-in version (and error if it didn't work out).With all of that done, we can now remove the hack where we disable unknown argument assertions since users can correctly guard to prevent hitting it.
Because of compatibility concerns, this is all gated behind
unstable-v4
.Fixes #3263