Source code

Revision control

Other Tools

1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
* License, v. 2.0. If a copy of the MPL was not distributed with this
3
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5
#ifndef RefCountedInsideLambdaChecker_h__
6
#define RefCountedInsideLambdaChecker_h__
7
8
#include "plugin.h"
9
10
class RefCountedInsideLambdaChecker : public BaseCheck {
11
public:
12
RefCountedInsideLambdaChecker(StringRef CheckName,
13
ContextType *Context = nullptr)
14
: BaseCheck(CheckName, Context) {}
15
void registerMatchers(MatchFinder *AstMatcher) override;
16
void check(const MatchFinder::MatchResult &Result) override;
17
18
void emitDiagnostics(SourceLocation Loc, StringRef Name, QualType Type);
19
20
private:
21
class ThisVisitor : public RecursiveASTVisitor<ThisVisitor> {
22
public:
23
explicit ThisVisitor(RefCountedInsideLambdaChecker &Checker)
24
: Checker(Checker) {}
25
26
bool VisitCXXThisExpr(CXXThisExpr *This);
27
28
private:
29
RefCountedInsideLambdaChecker &Checker;
30
};
31
};
32
33
#endif