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 MustReturnFromCallerChecker_h__
6
#define MustReturnFromCallerChecker_h__
7
8
#include "RecurseGuard.h"
9
#include "StmtToBlockMap.h"
10
#include "Utils.h"
11
#include "plugin.h"
12
13
class MustReturnFromCallerChecker : public BaseCheck {
14
public:
15
MustReturnFromCallerChecker(StringRef CheckName,
16
ContextType *Context = nullptr)
17
: BaseCheck(CheckName, Context) {}
18
void registerMatchers(MatchFinder *AstMatcher) override;
19
void check(const MatchFinder::MatchResult &Result) override;
20
21
private:
22
bool immediatelyReturns(RecurseGuard<const CFGBlock *> Block,
23
ASTContext *TheContext, size_t FromIdx);
24
};
25
26
#endif