9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_NARROWING_CONVERSIONS_H
10 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_NARROWING_CONVERSIONS_H
12 #include "../ClangTidyCheck.h"
16 namespace cppcoreguidelines {
31 void check(
const ast_matchers::MatchFinder::MatchResult &Result)
override;
34 void diagNarrowType(SourceLocation SourceLoc,
const Expr &Lhs,
37 void diagNarrowTypeToSignedInt(SourceLocation SourceLoc,
const Expr &Lhs,
40 void diagNarrowIntegerConstant(SourceLocation SourceLoc,
const Expr &Lhs,
41 const Expr &Rhs,
const llvm::APSInt &Value);
43 void diagNarrowIntegerConstantToSignedInt(SourceLocation SourceLoc,
44 const Expr &Lhs,
const Expr &Rhs,
45 const llvm::APSInt &Value,
46 const uint64_t HexBits);
48 void diagNarrowConstant(SourceLocation SourceLoc,
const Expr &Lhs,
51 void diagConstantCast(SourceLocation SourceLoc,
const Expr &Lhs,
54 void diagNarrowTypeOrConstant(
const ASTContext &Context,
55 SourceLocation SourceLoc,
const Expr &Lhs,
58 void handleIntegralCast(
const ASTContext &Context, SourceLocation SourceLoc,
59 const Expr &Lhs,
const Expr &Rhs);
61 void handleIntegralToBoolean(
const ASTContext &Context,
62 SourceLocation SourceLoc,
const Expr &Lhs,
65 void handleIntegralToFloating(
const ASTContext &Context,
66 SourceLocation SourceLoc,
const Expr &Lhs,
69 void handleFloatingToIntegral(
const ASTContext &Context,
70 SourceLocation SourceLoc,
const Expr &Lhs,
73 void handleFloatingToBoolean(
const ASTContext &Context,
74 SourceLocation SourceLoc,
const Expr &Lhs,
77 void handleBooleanToSignedIntegral(
const ASTContext &Context,
78 SourceLocation SourceLoc,
const Expr &Lhs,
81 void handleFloatingCast(
const ASTContext &Context, SourceLocation SourceLoc,
82 const Expr &Lhs,
const Expr &Rhs);
84 void handleBinaryOperator(
const ASTContext &Context, SourceLocation SourceLoc,
85 const Expr &Lhs,
const Expr &Rhs);
87 bool handleConditionalOperator(
const ASTContext &Context,
const Expr &Lhs,
90 void handleImplicitCast(
const ASTContext &Context,
91 const ImplicitCastExpr &Cast);
93 void handleBinaryOperator(
const ASTContext &Context,
94 const BinaryOperator &Op);
96 bool isWarningInhibitedByEquivalentSize(
const ASTContext &Context,
97 const BuiltinType &FromType,
98 const BuiltinType &ToType)
const;
100 const bool WarnOnIntegerNarrowingConversion;
101 const bool WarnOnIntegerToFloatingPointNarrowingConversion;
102 const bool WarnOnFloatingPointNarrowingConversion;
103 const bool WarnWithinTemplateInstantiation;
104 const bool WarnOnEquivalentBitWidth;
105 const StringRef IgnoreConversionFromTypes;
106 const bool PedanticMode;
113 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_NARROWING_CONVERSIONS_H