diff options
author | Brian Gesiak <modocache@gmail.com> | 2018-01-09 19:38:04 +0000 |
---|---|---|
committer | Brian Gesiak <modocache@gmail.com> | 2018-01-09 19:38:04 +0000 |
commit | d481df53104d0da83924075b9a0f15024d6232ef (patch) | |
tree | 983394fcb4688395ff4097768baabea0874f2aec /llvm/lib/Option/OptTable.cpp | |
parent | 8fcd07d53cb678fc6f1c203e61dc302774bb9761 (diff) | |
download | bcm5719-llvm-d481df53104d0da83924075b9a0f15024d6232ef.tar.gz bcm5719-llvm-d481df53104d0da83924075b9a0f15024d6232ef.zip |
[Option] For typo '-foo', suggest '--foo'
Summary:
https://reviews.llvm.org/rL321877 introduced the `OptTable::findNearest`
method, to find the closest edit distance option for a given string.
However, the implementation contained a bug: for a typo `-foo` with an
edit distance of 1 away from a valid option `--foo`, `findNearest`
would suggest a nearby option of `foo`. That is, the result would not
include the `--` prefix, and so was not a valid option.
Fix the bug by ensuring that the prefix string is initialized to one of
the valid prefixes for the option.
Test Plan: `check-llvm-unit`
Reviewers: v.g.vassilev, teemperor, ruiu, jroelofs, yamaguchi
Reviewed By: jroelofs
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D41873
llvm-svn: 322109
Diffstat (limited to 'llvm/lib/Option/OptTable.cpp')
-rw-r--r-- | llvm/lib/Option/OptTable.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Option/OptTable.cpp b/llvm/lib/Option/OptTable.cpp index f85b9043091..dcd1cc46d96 100644 --- a/llvm/lib/Option/OptTable.cpp +++ b/llvm/lib/Option/OptTable.cpp @@ -277,8 +277,8 @@ unsigned OptTable::findNearest(StringRef Option, std::string &NearestString, continue; // Find the most appropriate prefix. For example, if a user asks for // "--helm", suggest "--help" over "-help". - StringRef Prefix; - for (int P = 0; CandidateInfo.Prefixes[P]; P++) { + StringRef Prefix = CandidateInfo.Prefixes[0]; + for (int P = 1; CandidateInfo.Prefixes[P]; P++) { if (Option.startswith(CandidateInfo.Prefixes[P])) Prefix = CandidateInfo.Prefixes[P]; } |