summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Option/OptionParsingTest.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2019-05-01 16:45:15 +0000
committerNico Weber <nicolasweber@gmx.de>2019-05-01 16:45:15 +0000
commitc991daa5320d57bb7b0b53dee0cd5bd97aaa60a6 (patch)
treeeb02a9a9dc38ae8443b8ce53af74a188fd366f38 /llvm/unittests/Option/OptionParsingTest.cpp
parentc29d4915963251cbea47ec36a5cdaaf806944c59 (diff)
downloadbcm5719-llvm-c991daa5320d57bb7b0b53dee0cd5bd97aaa60a6.tar.gz
bcm5719-llvm-c991daa5320d57bb7b0b53dee0cd5bd97aaa60a6.zip
Option spell checking: Penalize delimiter flags if input has no argument
If the user passes a flag like `-version` to a program, it's more likely they mean `--version` than `-version:`, since there's no parameter passed. Hence, give delimited arguments a penalty of 1 if the user input doesn't contain the delimiter or no data after it. The motivation is that with this, lld-link can suggest "--version" instead of "-version:" for "-version" and "-nodefaultlib" instead of "-nodefaultlib:" for "-nodefaultlibs". Differential Revision: https://reviews.llvm.org/D61382 llvm-svn: 359701
Diffstat (limited to 'llvm/unittests/Option/OptionParsingTest.cpp')
-rw-r--r--llvm/unittests/Option/OptionParsingTest.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/unittests/Option/OptionParsingTest.cpp b/llvm/unittests/Option/OptionParsingTest.cpp
index ee741c25d05..e1d7a473ee7 100644
--- a/llvm/unittests/Option/OptionParsingTest.cpp
+++ b/llvm/unittests/Option/OptionParsingTest.cpp
@@ -298,10 +298,19 @@ TEST(Option, FindNearest) {
EXPECT_EQ(1U, T.findNearest("/framb:foo", Nearest));
EXPECT_EQ(Nearest, "/cramb:foo");
- // `--glormp` should have an editing distance of 1 to `--glormp=`.
- EXPECT_EQ(1U, T.findNearest("--glormp", Nearest));
- EXPECT_EQ(Nearest, "--glormp=");
- EXPECT_EQ(0U, T.findNearest("--glormp=foo", Nearest));
+ // `--glormp` should have an editing distance > 0 from `--glormp=`.
+ EXPECT_GT(T.findNearest("--glorrmp", Nearest), 0U);
+ EXPECT_EQ(Nearest, "--glorrmp=");
+ EXPECT_EQ(0U, T.findNearest("--glorrmp=foo", Nearest));
+
+ // `--blurmps` should correct to `--blurmp`, not `--blurmp=`, even though
+ // both naively have an editing distance of 1.
+ EXPECT_EQ(1U, T.findNearest("--blurmps", Nearest));
+ EXPECT_EQ(Nearest, "--blurmp");
+
+ // ...but `--blurmps=foo` should correct to `--blurmp=foo`.
+ EXPECT_EQ(1U, T.findNearest("--blurmps=foo", Nearest));
+ EXPECT_EQ(Nearest, "--blurmp=foo");
// Flags should be included and excluded as specified.
EXPECT_EQ(1U, T.findNearest("-doopf", Nearest, /*FlagsToInclude=*/OptFlag2));
OpenPOWER on IntegriCloud