nontrivial-threadlocal.h
1 // Copyright (c) 2023 Bitcoin Developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #ifndef NONTRIVIAL_THREADLOCAL_CHECK_H 6 #define NONTRIVIAL_THREADLOCAL_CHECK_H 7 8 #include <clang-tidy/ClangTidyCheck.h> 9 10 namespace bitcoin { 11 12 // Warn about any thread_local variable with a non-trivial destructor. 13 class NonTrivialThreadLocal final : public clang::tidy::ClangTidyCheck 14 { 15 public: 16 NonTrivialThreadLocal(clang::StringRef Name, clang::tidy::ClangTidyContext* Context) 17 : clang::tidy::ClangTidyCheck(Name, Context) {} 18 19 bool isLanguageVersionSupported(const clang::LangOptions& LangOpts) const override 20 { 21 return LangOpts.CPlusPlus; 22 } 23 void registerMatchers(clang::ast_matchers::MatchFinder* Finder) override; 24 void check(const clang::ast_matchers::MatchFinder::MatchResult& Result) override; 25 }; 26 27 } // namespace bitcoin 28 29 #endif // NONTRIVIAL_THREADLOCAL_CHECK_H