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 OverrideBaseCallChecker_h__ 6 #define OverrideBaseCallChecker_h__ 7 8 #include "plugin.h" 9 10 class OverrideBaseCallChecker : public BaseCheck { 11 public: 12 OverrideBaseCallChecker(StringRef CheckName, ContextType *Context = nullptr) BaseCheck(CheckName,Context)13 : BaseCheck(CheckName, Context) {} 14 void registerMatchers(MatchFinder *AstMatcher) override; 15 void check(const MatchFinder::MatchResult &Result) override; 16 17 private: 18 void evaluateExpression(const Stmt *StmtExpr, 19 std::list<const CXXMethodDecl *> &MethodList); 20 void getRequiredBaseMethod(const CXXMethodDecl *Method, 21 std::list<const CXXMethodDecl *> &MethodsList); 22 void findBaseMethodCall(const CXXMethodDecl *Method, 23 std::list<const CXXMethodDecl *> &MethodsList); 24 bool isRequiredBaseMethod(const CXXMethodDecl *Method); 25 }; 26 27 #endif 28