[llvm] r227148 - Pete Cooper suggested the new API should use ArrayRef instead of SmallVectorImpl. Also adding a test case.
Chris Bieneman
beanz at apple.com
Mon Jan 26 14:50:48 PST 2015
Author: cbieneman
Date: Mon Jan 26 16:50:47 2015
New Revision: 227148
URL: http://llvm.org/viewvc/llvm-project?rev=227148&view=rev
Log:
Pete Cooper suggested the new API should use ArrayRef instead of SmallVectorImpl. Also adding a test case.
Modified:
llvm/trunk/include/llvm/Support/CommandLine.h
llvm/trunk/lib/Support/CommandLine.cpp
llvm/trunk/unittests/Support/CommandLineTest.cpp
Modified: llvm/trunk/include/llvm/Support/CommandLine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/CommandLine.h?rev=227148&r1=227147&r2=227148&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/CommandLine.h (original)
+++ llvm/trunk/include/llvm/Support/CommandLine.h Mon Jan 26 16:50:47 2015
@@ -20,6 +20,7 @@
#ifndef LLVM_SUPPORT_COMMANDLINE_H
#define LLVM_SUPPORT_COMMANDLINE_H
+#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/Twine.h"
@@ -1938,7 +1939,7 @@ void HideUnrelatedOptions(cl::OptionCate
/// Some tools (like clang-format) like to be able to hide all options that are
/// not specific to the tool. This function allows a tool to specify a single
/// option category to display in the -help output.
-void HideUnrelatedOptions(SmallVectorImpl<cl::OptionCategory *> &Categories);
+void HideUnrelatedOptions(ArrayRef<cl::OptionCategory *> Categories);
} // End namespace cl
Modified: llvm/trunk/lib/Support/CommandLine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/CommandLine.cpp?rev=227148&r1=227147&r2=227148&view=diff
==============================================================================
--- llvm/trunk/lib/Support/CommandLine.cpp (original)
+++ llvm/trunk/lib/Support/CommandLine.cpp Mon Jan 26 16:50:47 2015
@@ -1861,8 +1861,7 @@ void cl::HideUnrelatedOptions(cl::Option
}
}
-void cl::HideUnrelatedOptions(
- SmallVectorImpl<cl::OptionCategory *> &Categories) {
+void cl::HideUnrelatedOptions(ArrayRef<cl::OptionCategory *> Categories) {
auto CategoriesBegin = Categories.begin();
auto CategoriesEnd = Categories.end();
StringMap<cl::Option *> Options;
Modified: llvm/trunk/unittests/Support/CommandLineTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/CommandLineTest.cpp?rev=227148&r1=227147&r2=227148&view=diff
==============================================================================
--- llvm/trunk/unittests/Support/CommandLineTest.cpp (original)
+++ llvm/trunk/unittests/Support/CommandLineTest.cpp Mon Jan 26 16:50:47 2015
@@ -247,4 +247,28 @@ TEST(CommandLineTest, HideUnrelatedOptio
<< "Hid default option that should be visable.";
}
+cl::OptionCategory TestCategory2("Test Options set 2", "Description");
+
+TEST(CommandLineTest, HideUnrelatedOptionsMulti) {
+ cl::opt<int> TestOption1("test-option-1");
+ cl::opt<int> TestOption2("test-option-2", cl::cat(TestCategory));
+ cl::opt<int> TestOption3("test-option-3", cl::cat(TestCategory2));
+
+ cl::OptionCategory *VisibleCategories[] = {&TestCategory, &TestCategory2};
+
+ cl::HideUnrelatedOptions(makeArrayRef(VisibleCategories));
+
+ ASSERT_EQ(cl::ReallyHidden, TestOption1.getOptionHiddenFlag())
+ << "Failed to hide extra option.";
+ ASSERT_EQ(cl::NotHidden, TestOption2.getOptionHiddenFlag())
+ << "Hid extra option that should be visable.";
+ ASSERT_EQ(cl::NotHidden, TestOption3.getOptionHiddenFlag())
+ << "Hid extra option that should be visable.";
+
+ StringMap<cl::Option *> Map;
+ cl::getRegisteredOptions(Map);
+ ASSERT_EQ(cl::NotHidden, Map["help"]->getOptionHiddenFlag())
+ << "Hid default option that should be visable.";
+}
+
} // anonymous namespace
More information about the llvm-commits
mailing list