1 //===--- IntegerTypesCheck.h - clang-tidy -----------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_GOOGLE_INTEGERTYPESCHECK_H
10 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_GOOGLE_INTEGERTYPESCHECK_H
12 #include "../ClangTidyCheck.h"
18 class IdentifierTable
;
20 namespace tidy::google::runtime
{
22 /// Finds uses of `short`, `long` and `long long` and suggest replacing them
23 /// with `u?intXX(_t)?`.
25 /// Corresponding cpplint.py check: 'runtime/int'.
27 /// For the user-facing documentation see:
28 /// http://clang.llvm.org/extra/clang-tidy/checks/google/runtime-int.html
29 class IntegerTypesCheck
: public ClangTidyCheck
{
31 IntegerTypesCheck(StringRef Name
, ClangTidyContext
*Context
);
32 bool isLanguageVersionSupported(const LangOptions
&LangOpts
) const override
{
33 return LangOpts
.CPlusPlus
&& !LangOpts
.ObjC
;
35 void registerMatchers(ast_matchers::MatchFinder
*Finder
) override
;
36 void check(const ast_matchers::MatchFinder::MatchResult
&Result
) override
;
37 void storeOptions(ClangTidyOptions::OptionMap
&Opts
) override
;
38 std::optional
<TraversalKind
> getCheckTraversalKind() const override
{
39 return TK_IgnoreUnlessSpelledInSource
;
43 const StringRef UnsignedTypePrefix
;
44 const StringRef SignedTypePrefix
;
45 const StringRef TypeSuffix
;
47 std::unique_ptr
<IdentifierTable
> IdentTable
;
50 } // namespace tidy::google::runtime
53 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_GOOGLE_INTEGERTYPESCHECK_H