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