Index: clang-tools-extra/trunk/clang-tidy/google/TodoCommentCheck.h =================================================================== --- clang-tools-extra/trunk/clang-tidy/google/TodoCommentCheck.h +++ clang-tools-extra/trunk/clang-tidy/google/TodoCommentCheck.h @@ -21,9 +21,13 @@ /// Corresponding cpplint.py check: readability/todo class TodoCommentCheck : public ClangTidyCheck { public: - TodoCommentCheck(StringRef Name, ClangTidyContext *Context) - : ClangTidyCheck(Name, Context) {} + TodoCommentCheck(StringRef Name, ClangTidyContext *Context); + ~TodoCommentCheck(); void registerPPCallbacks(CompilerInstance &Compiler) override; + +private: + class TodoCommentHandler; + std::unique_ptr Handler; }; } // namespace readability Index: clang-tools-extra/trunk/clang-tidy/google/TodoCommentCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/google/TodoCommentCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/google/TodoCommentCheck.cpp @@ -15,8 +15,7 @@ namespace tidy { namespace readability { -namespace { -class TodoCommentHandler : public CommentHandler { +class TodoCommentCheck::TodoCommentHandler : public CommentHandler { public: explicit TodoCommentHandler(TodoCommentCheck &Check) : Check(Check), TodoMatch("^// *TODO(\\(.*\\))?:?( )?(.*)$") {} @@ -54,10 +53,15 @@ TodoCommentCheck &Check; llvm::Regex TodoMatch; }; -} // namespace + +TodoCommentCheck::TodoCommentCheck(StringRef Name, ClangTidyContext *Context) + : ClangTidyCheck(Name, Context), + Handler(llvm::make_unique(*this)) {} + +TodoCommentCheck::~TodoCommentCheck() {} void TodoCommentCheck::registerPPCallbacks(CompilerInstance &Compiler) { - Compiler.getPreprocessor().addCommentHandler(new TodoCommentHandler(*this)); + Compiler.getPreprocessor().addCommentHandler(Handler.get()); } } // namespace readability