[llvm-branch-commits] [llvm] 47ee4f6 - Revert "[Support]Look up in top-level subcommand as a fallback when looking options for a custom subcommand. (#71776)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Nov 10 11:40:47 PST 2023
Author: Mingming Liu
Date: 2023-11-10T11:40:44-08:00
New Revision: 47ee4f6561fd24615b4d77a0d87b863f9c7eb87a
URL: https://github.com/llvm/llvm-project/commit/47ee4f6561fd24615b4d77a0d87b863f9c7eb87a
DIFF: https://github.com/llvm/llvm-project/commit/47ee4f6561fd24615b4d77a0d87b863f9c7eb87a.diff
LOG: Revert "[Support]Look up in top-level subcommand as a fallback when looking options for a custom subcommand. (#71776)"
This reverts commit b88308b1b4813e55ce8f54ceff6e57736328fb58.
Added:
Modified:
llvm/lib/Support/CommandLine.cpp
llvm/unittests/Support/CommandLineTest.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp
index a7e0cae8b855d7c..55633d7cafa4791 100644
--- a/llvm/lib/Support/CommandLine.cpp
+++ b/llvm/lib/Support/CommandLine.cpp
@@ -1667,13 +1667,6 @@ bool CommandLineParser::ParseCommandLineOptions(int argc,
Handler = LookupLongOption(*ChosenSubCommand, ArgName, Value,
LongOptionsUseDoubleDash, HaveDoubleDash);
- // If Handler is not found in a specialized subcommand, look up handler
- // in the top-level subcommand.
- // cl::opt without cl::sub belongs to top-level subcommand.
- if (!Handler && ChosenSubCommand != &SubCommand::getTopLevel())
- Handler = LookupLongOption(SubCommand::getTopLevel(), ArgName, Value,
- LongOptionsUseDoubleDash, HaveDoubleDash);
-
// Check to see if this "option" is really a prefixed or grouped argument.
if (!Handler && !(LongOptionsUseDoubleDash && HaveDoubleDash))
Handler = HandlePrefixedOrGroupedOption(ArgName, Value, ErrorParsing,
diff --git a/llvm/unittests/Support/CommandLineTest.cpp b/llvm/unittests/Support/CommandLineTest.cpp
index 4411ed0f83928ad..41cc8260acfedf7 100644
--- a/llvm/unittests/Support/CommandLineTest.cpp
+++ b/llvm/unittests/Support/CommandLineTest.cpp
@@ -525,59 +525,6 @@ TEST(CommandLineTest, LookupFailsInWrongSubCommand) {
EXPECT_FALSE(Errs.empty());
}
-TEST(CommandLineTest, TopLevelOptInSubcommand) {
- enum LiteralOptionEnum {
- foo,
- bar,
- baz,
- };
-
- cl::ResetCommandLineParser();
-
- // This is a top-level option and not associated with a subcommand.
- // A command line using subcommand should parse both subcommand options and
- // top-level options. A valid use case is that users of llvm command line
- // tools should be able to specify top-level options defined in any library.
- cl::opt<std::string> TopLevelOpt("str", cl::init("txt"),
- cl::desc("A top-level option."));
-
- StackSubCommand SC("sc", "Subcommand");
- StackOption<std::string> PositionalOpt(
- cl::Positional, cl::desc("positional argument test coverage"),
- cl::sub(SC));
- StackOption<LiteralOptionEnum> LiteralOpt(
- cl::desc("literal argument test coverage"), cl::sub(SC), cl::init(bar),
- cl::values(clEnumVal(foo, "foo"), clEnumVal(bar, "bar"),
- clEnumVal(baz, "baz")));
- StackOption<bool> EnableOpt("enable", cl::sub(SC), cl::init(false));
- StackOption<int> ThresholdOpt("threshold", cl::sub(SC), cl::init(1));
-
- const char *PositionalOptVal = "input-file";
- const char *args[] = {"prog", "sc", PositionalOptVal,
- "-enable", "--str=csv", "--threshold=2"};
-
- // cl::ParseCommandLineOptions returns true on success. Otherwise, it will
- // print the error message to stderr and exit in this setting (`Errs` ostream
- // is not set).
- ASSERT_TRUE(cl::ParseCommandLineOptions(sizeof(args) / sizeof(args[0]), args,
- StringRef()));
- EXPECT_STREQ(PositionalOpt.getValue().c_str(), PositionalOptVal);
- EXPECT_TRUE(EnableOpt);
- // Tests that the value of `str` option is `csv` as specified.
- EXPECT_STREQ(TopLevelOpt.getValue().c_str(), "csv");
- EXPECT_EQ(ThresholdOpt, 2);
-
- for (auto &[LiteralOptVal, WantLiteralOpt] :
- {std::pair{"--bar", bar}, {"--foo", foo}, {"--baz", baz}}) {
- const char *args[] = {"prog", "sc", LiteralOptVal};
- ASSERT_TRUE(cl::ParseCommandLineOptions(sizeof(args) / sizeof(args[0]),
- args, StringRef()));
-
- // Tests that literal options are parsed correctly.
- EXPECT_EQ(LiteralOpt, WantLiteralOpt);
- }
-}
-
TEST(CommandLineTest, AddToAllSubCommands) {
cl::ResetCommandLineParser();
More information about the llvm-branch-commits
mailing list