From 6f4e291445f8d23870cb0155a6e7e2516e3c1301 Mon Sep 17 00:00:00 2001 From: Steven Wu Date: Thu, 6 Nov 2025 14:24:31 -0800 Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?= =?UTF-8?q?itial=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.7 --- llvm/lib/Option/ArgList.cpp | 4 +--- llvm/unittests/Option/OptionSubCommandsTest.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Option/ArgList.cpp b/llvm/lib/Option/ArgList.cpp index 2f4e21257af09..9f9d63f212c88 100644 --- a/llvm/lib/Option/ArgList.cpp +++ b/llvm/lib/Option/ArgList.cpp @@ -230,10 +230,8 @@ StringRef ArgList::getSubCommand( HandleMultipleSubcommands(SubCommands); return {}; } - if (!OtherPositionals.empty()) { + if (!OtherPositionals.empty()) HandleOtherPositionals(OtherPositionals); - return {}; - } if (SubCommands.size() == 1) return SubCommands.front(); diff --git a/llvm/unittests/Option/OptionSubCommandsTest.cpp b/llvm/unittests/Option/OptionSubCommandsTest.cpp index e31a3262f135e..51894a7d05249 100644 --- a/llvm/unittests/Option/OptionSubCommandsTest.cpp +++ b/llvm/unittests/Option/OptionSubCommandsTest.cpp @@ -192,6 +192,19 @@ TYPED_TEST(OptSubCommandTableTest, SubCommandParsing) { std::string::npos, ErrMsg.find("Option [lowercase] is not valid for SubCommand [bar]")); } + + { + // Test case 7: Check valid use of a valid subcommand following more + // positional arguments. + const char *Args[] = {"bar", "input"}; + InputArgList AL = T.ParseArgs(Args, MAI, MAC); + StringRef SC = AL.getSubCommand( + T.getSubCommands(), HandleMultipleSubcommands, HandleOtherPositionals); + EXPECT_EQ(SC, "bar"); // valid subcommand + EXPECT_NE(std::string::npos, + ErrMsg.find("Unregistered positionals passed")); + EXPECT_NE(std::string::npos, ErrMsg.find("input")); + } } TYPED_TEST(OptSubCommandTableTest, SubCommandHelp) { From fe0b41c4b731d9b217b8517336fded8878da2d71 Mon Sep 17 00:00:00 2001 From: Steven Wu Date: Thu, 6 Nov 2025 14:26:27 -0800 Subject: [PATCH 2/2] clang-format Created using spr 1.3.7 --- llvm/unittests/Option/OptionSubCommandsTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/unittests/Option/OptionSubCommandsTest.cpp b/llvm/unittests/Option/OptionSubCommandsTest.cpp index 51894a7d05249..d4744c90b0069 100644 --- a/llvm/unittests/Option/OptionSubCommandsTest.cpp +++ b/llvm/unittests/Option/OptionSubCommandsTest.cpp @@ -200,7 +200,7 @@ TYPED_TEST(OptSubCommandTableTest, SubCommandParsing) { InputArgList AL = T.ParseArgs(Args, MAI, MAC); StringRef SC = AL.getSubCommand( T.getSubCommands(), HandleMultipleSubcommands, HandleOtherPositionals); - EXPECT_EQ(SC, "bar"); // valid subcommand + EXPECT_EQ(SC, "bar"); // valid subcommand EXPECT_NE(std::string::npos, ErrMsg.find("Unregistered positionals passed")); EXPECT_NE(std::string::npos, ErrMsg.find("input"));