#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"
/// 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(ArrayRef<const cl::OptionCategory *> Categories);
+void HideUnrelatedOptions(SmallVectorImpl<cl::OptionCategory *> &Categories);
} // End namespace cl
}
}
-void cl::HideUnrelatedOptions(ArrayRef<const cl::OptionCategory *> Categories) {
+void cl::HideUnrelatedOptions(
+ SmallVectorImpl<cl::OptionCategory *> &Categories) {
auto CategoriesBegin = Categories.begin();
auto CategoriesEnd = Categories.end();
StringMap<cl::Option *> Options;
<< "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));
-
- 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.";
-}
-
} // anonymous namespace