mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Re-landing changes to use ArrayRef instead of SmallVectorImpl, and new API test.
This contains the changes from r227148 & r227154, and also fixes to the test case to properly clean up the stack options. llvm-svn: 227255
This commit is contained in:
parent
3152c31e63
commit
c96e41c453
@ -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::OptionCategory &Category);
|
||||
/// 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<const cl::OptionCategory *> Categories);
|
||||
|
||||
} // End namespace cl
|
||||
|
||||
|
@ -1861,8 +1861,7 @@ void cl::HideUnrelatedOptions(cl::OptionCategory &Category) {
|
||||
}
|
||||
}
|
||||
|
||||
void cl::HideUnrelatedOptions(
|
||||
SmallVectorImpl<cl::OptionCategory *> &Categories) {
|
||||
void cl::HideUnrelatedOptions(ArrayRef<const cl::OptionCategory *> Categories) {
|
||||
auto CategoriesBegin = Categories.begin();
|
||||
auto CategoriesEnd = Categories.end();
|
||||
StringMap<cl::Option *> Options;
|
||||
|
@ -231,8 +231,8 @@ TEST(CommandLineTest, AliasRequired) {
|
||||
}
|
||||
|
||||
TEST(CommandLineTest, HideUnrelatedOptions) {
|
||||
cl::opt<int> TestOption1("test-option-1");
|
||||
cl::opt<int> TestOption2("test-option-2", cl::cat(TestCategory));
|
||||
StackOption<int> TestOption1("hide-option-1");
|
||||
StackOption<int> TestOption2("hide-option-2", cl::cat(TestCategory));
|
||||
|
||||
cl::HideUnrelatedOptions(TestCategory);
|
||||
|
||||
@ -241,7 +241,32 @@ TEST(CommandLineTest, HideUnrelatedOptions) {
|
||||
ASSERT_EQ(cl::NotHidden, TestOption2.getOptionHiddenFlag())
|
||||
<< "Hid extra option that should be visable.";
|
||||
|
||||
StringMap<cl::Option*> Map;
|
||||
StringMap<cl::Option *> Map;
|
||||
cl::getRegisteredOptions(Map);
|
||||
ASSERT_EQ(cl::NotHidden, Map["help"]->getOptionHiddenFlag())
|
||||
<< "Hid default option that should be visable.";
|
||||
}
|
||||
|
||||
cl::OptionCategory TestCategory2("Test Options set 2", "Description");
|
||||
|
||||
TEST(CommandLineTest, HideUnrelatedOptionsMulti) {
|
||||
StackOption<int> TestOption1("multi-hide-option-1");
|
||||
StackOption<int> TestOption2("multi-hide-option-2", cl::cat(TestCategory));
|
||||
StackOption<int> TestOption3("multi-hide-option-3", cl::cat(TestCategory2));
|
||||
|
||||
const 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.";
|
||||
|
Loading…
Reference in New Issue
Block a user