1c58c7a6eSMarco Gartmann //===--- VirtualClassDestructorCheck.h - clang-tidy -------------*- C++ -*-===// 2c58c7a6eSMarco Gartmann // 3c58c7a6eSMarco Gartmann // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4c58c7a6eSMarco Gartmann // See https://llvm.org/LICENSE.txt for license information. 5c58c7a6eSMarco Gartmann // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6c58c7a6eSMarco Gartmann // 7c58c7a6eSMarco Gartmann //===----------------------------------------------------------------------===// 8c58c7a6eSMarco Gartmann 9c58c7a6eSMarco Gartmann #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_VIRTUALCLASSDESTRUCTORCHECK_H 10c58c7a6eSMarco Gartmann #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_VIRTUALCLASSDESTRUCTORCHECK_H 11c58c7a6eSMarco Gartmann 12c58c7a6eSMarco Gartmann #include "../ClangTidyCheck.h" 13c58c7a6eSMarco Gartmann #include <string> 14c58c7a6eSMarco Gartmann 15*4718da50SCarlos Galvez namespace clang::tidy::cppcoreguidelines { 16c58c7a6eSMarco Gartmann 17c58c7a6eSMarco Gartmann /// Finds base classes whose destructor is neither public and virtual 18c58c7a6eSMarco Gartmann /// nor protected and non-virtual. 19c58c7a6eSMarco Gartmann /// 20c58c7a6eSMarco Gartmann /// For the user-facing documentation see: 216e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines/virtual-class-destructor.html 22c58c7a6eSMarco Gartmann class VirtualClassDestructorCheck : public ClangTidyCheck { 23c58c7a6eSMarco Gartmann public: VirtualClassDestructorCheck(StringRef Name,ClangTidyContext * Context)24c58c7a6eSMarco Gartmann VirtualClassDestructorCheck(StringRef Name, ClangTidyContext *Context) 25c58c7a6eSMarco Gartmann : ClangTidyCheck(Name, Context) {} 26c58c7a6eSMarco Gartmann isLanguageVersionSupported(const LangOptions & LangOpts)27c58c7a6eSMarco Gartmann bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { 28c58c7a6eSMarco Gartmann return LangOpts.CPlusPlus; 29c58c7a6eSMarco Gartmann } 30c58c7a6eSMarco Gartmann 31c58c7a6eSMarco Gartmann void registerMatchers(ast_matchers::MatchFinder *Finder) override; 32c58c7a6eSMarco Gartmann void check(const ast_matchers::MatchFinder::MatchResult &Result) override; 33c58c7a6eSMarco Gartmann }; 34c58c7a6eSMarco Gartmann 35*4718da50SCarlos Galvez } // namespace clang::tidy::cppcoreguidelines 36c58c7a6eSMarco Gartmann 37c58c7a6eSMarco Gartmann #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_VIRTUALCLASSDESTRUCTORCHECK_H 38