diff options
author | Etienne Bergeron <etienneb@google.com> | 2016-05-10 15:31:15 +0000 |
---|---|---|
committer | Etienne Bergeron <etienneb@google.com> | 2016-05-10 15:31:15 +0000 |
commit | de1ec037793fbbc44553c2bb45a3d9aa46bb2202 (patch) | |
tree | d3bc506c8e1cd4f5970851c35113750ec3968d5d /clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp | |
parent | bf9473b2d8dfeaebcfa25370d16a0f753afa57f8 (diff) | |
download | bcm5719-llvm-de1ec037793fbbc44553c2bb45a3d9aa46bb2202.tar.gz bcm5719-llvm-de1ec037793fbbc44553c2bb45a3d9aa46bb2202.zip |
[clang-tidy] Lift parsing of sequence of names functions to utils.
Summary:
Lift some common code used by multiple checkers.
This function is also used by checkers that are coming.
It is quite common for a checker to parse a list of names.
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D19846
llvm-svn: 269065
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp b/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp index 4b7eaed3612..d9040ad0ed7 100644 --- a/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/DanglingHandleCheck.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include "DanglingHandleCheck.h" +#include "../utils/OptionsUtils.h" #include "clang/AST/ASTContext.h" #include "clang/ASTMatchers/ASTMatchFinder.h" @@ -19,20 +20,6 @@ namespace misc { namespace { -static const char HandleClassesDelimiter[] = ";"; - -std::vector<std::string> parseClasses(StringRef Option) { - SmallVector<StringRef, 4> Classes; - Option.split(Classes, HandleClassesDelimiter); - std::vector<std::string> Result; - for (StringRef &Class : Classes) { - Class = Class.trim(); - if (!Class.empty()) - Result.push_back(Class); - } - return Result; -} - ast_matchers::internal::BindableMatcher<Stmt> handleFrom(ast_matchers::internal::Matcher<RecordDecl> IsAHandle, ast_matchers::internal::Matcher<Expr> Arg) { @@ -97,7 +84,7 @@ makeContainerMatcher(ast_matchers::internal::Matcher<RecordDecl> IsAHandle) { DanglingHandleCheck::DanglingHandleCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), - HandleClasses(parseClasses(Options.get( + HandleClasses(utils::options::parseStringList(Options.get( "HandleClasses", "std::basic_string_view;std::experimental::basic_string_view"))), IsAHandle(cxxRecordDecl(hasAnyName(std::vector<StringRef>( @@ -106,8 +93,7 @@ DanglingHandleCheck::DanglingHandleCheck(StringRef Name, void DanglingHandleCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "HandleClasses", - llvm::join(HandleClasses.begin(), HandleClasses.end(), - HandleClassesDelimiter)); + utils::options::serializeStringList(HandleClasses)); } void DanglingHandleCheck::registerMatchersForVariables(MatchFinder *Finder) { |