19ae5896dSCarlos Galvez //===--- AvoidConstOrRefDataMembersCheck.h - clang-tidy ---------*- C++ -*-===//
29ae5896dSCarlos Galvez //
39ae5896dSCarlos Galvez // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
49ae5896dSCarlos Galvez // See https://llvm.org/LICENSE.txt for license information.
59ae5896dSCarlos Galvez // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
69ae5896dSCarlos Galvez //
79ae5896dSCarlos Galvez //===----------------------------------------------------------------------===//
89ae5896dSCarlos Galvez 
99ae5896dSCarlos Galvez #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_AVOIDCONSTORREFDATAMEMBERSCHECK_H
109ae5896dSCarlos Galvez #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_AVOIDCONSTORREFDATAMEMBERSCHECK_H
119ae5896dSCarlos Galvez 
129ae5896dSCarlos Galvez #include "../ClangTidyCheck.h"
139ae5896dSCarlos Galvez 
14*4718da50SCarlos Galvez namespace clang::tidy::cppcoreguidelines {
159ae5896dSCarlos Galvez 
169ae5896dSCarlos Galvez /// Const-qualified or reference data members in classes should be avoided, as
179ae5896dSCarlos Galvez /// they make the class non-copy-assignable.
189ae5896dSCarlos Galvez ///
199ae5896dSCarlos Galvez /// For the user-facing documentation see:
209ae5896dSCarlos Galvez /// http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines/avoid-const-or-ref-data-members.html
219ae5896dSCarlos Galvez class AvoidConstOrRefDataMembersCheck : public ClangTidyCheck {
229ae5896dSCarlos Galvez public:
AvoidConstOrRefDataMembersCheck(StringRef Name,ClangTidyContext * Context)239ae5896dSCarlos Galvez   AvoidConstOrRefDataMembersCheck(StringRef Name, ClangTidyContext *Context)
249ae5896dSCarlos Galvez       : ClangTidyCheck(Name, Context) {}
isLanguageVersionSupported(const LangOptions & LangOpts)259ae5896dSCarlos Galvez   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
269ae5896dSCarlos Galvez     return LangOpts.CPlusPlus;
279ae5896dSCarlos Galvez   }
289ae5896dSCarlos Galvez   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
299ae5896dSCarlos Galvez   void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
309ae5896dSCarlos Galvez };
319ae5896dSCarlos Galvez 
32*4718da50SCarlos Galvez } // namespace clang::tidy::cppcoreguidelines
339ae5896dSCarlos Galvez 
349ae5896dSCarlos Galvez #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_AVOIDCONSTORREFDATAMEMBERSCHECK_H
35