1*d69c362dSCarlos Galvez //===--- MisleadingCaptureDefaultByValueCheck.h - clang-tidy---------------===// 2eedbe81bSCarlos Galvez // 3eedbe81bSCarlos Galvez // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4eedbe81bSCarlos Galvez // See https://llvm.org/LICENSE.txt for license information. 5eedbe81bSCarlos Galvez // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6eedbe81bSCarlos Galvez // 7eedbe81bSCarlos Galvez //===----------------------------------------------------------------------===// 8eedbe81bSCarlos Galvez 9eedbe81bSCarlos Galvez #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_MISLEADINGCAPTUREDEFAULTBYVALUECHECK_H 10eedbe81bSCarlos Galvez #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_MISLEADINGCAPTUREDEFAULTBYVALUECHECK_H 11eedbe81bSCarlos Galvez 12eedbe81bSCarlos Galvez #include "../ClangTidyCheck.h" 13eedbe81bSCarlos Galvez 14eedbe81bSCarlos Galvez namespace clang::tidy::cppcoreguidelines { 15eedbe81bSCarlos Galvez 16eedbe81bSCarlos Galvez /// Warns when lambda specify a by-value capture default and capture ``this``. 17eedbe81bSCarlos Galvez /// 18fa3de2edSCarlos Galvez /// By-value capture defaults in member functions can be misleading about 19fa3de2edSCarlos Galvez /// whether data members are captured by value or reference. 20eedbe81bSCarlos Galvez /// 21eedbe81bSCarlos Galvez /// For the user-facing documentation see: 22eedbe81bSCarlos Galvez /// http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines/misleading-capture-default-by-value.html 23eedbe81bSCarlos Galvez class MisleadingCaptureDefaultByValueCheck : public ClangTidyCheck { 24eedbe81bSCarlos Galvez public: 25eedbe81bSCarlos Galvez MisleadingCaptureDefaultByValueCheck(StringRef Name, 26eedbe81bSCarlos Galvez ClangTidyContext *Context); 27eedbe81bSCarlos Galvez void registerMatchers(ast_matchers::MatchFinder *Finder) override; 28eedbe81bSCarlos Galvez void check(const ast_matchers::MatchFinder::MatchResult &Result) override; isLanguageVersionSupported(const LangOptions & LangOpts)29eedbe81bSCarlos Galvez bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { 30eedbe81bSCarlos Galvez return LangOpts.CPlusPlus11; 31eedbe81bSCarlos Galvez } 32eedbe81bSCarlos Galvez }; 33eedbe81bSCarlos Galvez 34eedbe81bSCarlos Galvez } // namespace clang::tidy::cppcoreguidelines 35eedbe81bSCarlos Galvez 36eedbe81bSCarlos Galvez #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_MISLEADINGCAPTUREDEFAULTBYVALUECHECK_H 37