fix: use last occurrence in combined short flags - #3897
Open
cuishuang wants to merge 2 commits into
Open
Conversation
Signed-off-by: cuishuang <imcusg@gmail.com>
Signed-off-by: cuishuang <imcusg@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Use the last occurrence of
-p,-n, and-bwhen determining the effective option in combined short arguments.The raw argument scanner currently uses
Iterator::position, which finds the first occurrence of each flag. This works for combinations such as-pnand-np, but produces incorrect results when a flag occurs more than once.For example,
-npnends with-n, so numbering should be enabled. The scanner currently compares the firstnwithpand incorrectly allows the loop-through printer to be selected, which drops the requested line numbers.The same issue affects
-bcombinations:-pbpshould use plain output.-bpbshould number non-blank lines.-pnpalready produces plain output through clap's option handling, but the raw scan still selects the wrong internal printing path.Switch the scans to
rposition()and add regression coverage for all four combinations. The existing rule that-btakes precedence over-nremains unchanged.Tests
cargo test --test integration_testscargo fmt --all -- --check