This is an archive of the discontinued LLVM Phabricator instance.

[Option] For typo '-foo', suggest '--foo'
ClosedPublic

Authored by modocache on Jan 9 2018, 10:50 AM.

Details

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

Event Timeline

modocache created this revision.Jan 9 2018, 10:50 AM
This revision is now accepted and ready to land.Jan 9 2018, 10:54 AM
modocache closed this revision.Jan 9 2018, 11:39 AM

Great, thanks for the quick review, @jroelofs!

thakis added a subscriber: thakis.May 10 2018, 11:55 AM
thakis added inline comments.
lib/Option/OptTable.cpp
281

This relies on '--' being later in Prefixes than '-'. If '--' is Prefixes[0] is -- and then Prefixes[1] is -, then Option.startswith (Prefixes[1]) is true and we switch from -- to - for flags that start with --.

And -- being later in Prefixes isn't guaranteed.

thakis added inline comments.May 11 2018, 8:43 PM
lib/Option/OptTable.cpp
281

(A fix for this is at https://reviews.llvm.org/D46776)