clang-tools 23.0.0git
RedundantNestedIfCheck.cpp File Reference
#include "RedundantNestedIfCheck.h"
#include "../utils/LexerUtils.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Stmt.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Lex/Lexer.h"
#include "clang/Tooling/FixIt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include <cassert>
#include <optional>
#include <string>
#include <vector>

Go to the source code of this file.

Namespaces

namespace  clang
 ===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
namespace  clang::tidy
namespace  clang::tidy::readability

Functions

static bool clang::tidy::readability::containsUserDefinedBoolConversion (const Expr *Expression)
static bool clang::tidy::readability::conditionNeedsBoolCast (const Expr *Condition)
static bool clang::tidy::readability::isConditionExpressionMergeable (const Expr *Condition, bool AllowUserDefinedBoolConversion)
static std::optional< CharSourceRange > clang::tidy::readability::getIfConditionRange (const IfStmt *If, const SourceManager &SM, const LangOptions &LangOpts)
static std::optional< std::string > clang::tidy::readability::getIfConditionText (const IfStmt *If, const SourceManager &SM, const LangOptions &LangOpts)
static bool clang::tidy::readability::isLocationInCharRange (SourceLocation Loc, CharSourceRange Range, const SourceManager &SM)
static bool clang::tidy::readability::hasOnlyPayloadCommentsInNestedHeader (const IfStmt *Nested, const SourceManager &SM, const LangOptions &LangOpts)
static bool clang::tidy::readability::canRewriteOuterConditionVariable (const IfStmt *If, bool AllowUserDefinedBoolConversion)
static const IfStmt * clang::tidy::readability::getOnlyNestedIf (const Stmt *Then)
static bool clang::tidy::readability::isMergeCandidate (const IfStmt *If, bool AllowInitStorage, bool RequireConstexpr, bool AllowConditionVariable, bool AllowUserDefinedBoolConversion, const LangOptions &LangOpts)
static bool clang::tidy::readability::isAttributedIf (const IfStmt *If, ASTContext &Context)
static IfChain clang::tidy::readability::getMergeChain (const IfStmt *Root, ASTContext &Context, bool AllowUserDefinedBoolConversion)
static bool clang::tidy::readability::isConstantBooleanCondition (const Expr *Condition, const ASTContext &Context, bool RequiredValue)
static bool clang::tidy::readability::isAlwaysFormableDependentConstexprCondition (const Expr *Condition)
static bool clang::tidy::readability::isConstexprChainSemanticallySafe (llvm::ArrayRef< const IfStmt * > Chain, const ASTContext &Context)
template<typename RangeT>
static bool clang::tidy::readability::isUnsafeRangeSpelling (RangeT Range)
static bool clang::tidy::readability::isUnsafeTokenRange (SourceRange Range, const SourceManager &SM, const LangOptions &LangOpts)
static bool clang::tidy::readability::isUnsafeCharRange (CharSourceRange Range, const SourceManager &SM, const LangOptions &LangOpts)
static bool clang::tidy::readability::isFixitSafeForChain (llvm::ArrayRef< const IfStmt * > Chain, const SourceManager &SM, const LangOptions &LangOpts)
static std::string clang::tidy::readability::wrapConditionText (StringRef ConditionText, bool NeedBoolCast)
static std::optional< std::string > clang::tidy::readability::getConjunctText (const IfStmt *If, const ASTContext &Context, bool UseConditionExprText)
static CombinedConditionBuildResult clang::tidy::readability::buildCombinedCondition (llvm::ArrayRef< const IfStmt * > Chain, const ASTContext &Context)
static std::optional< CharSourceRange > clang::tidy::readability::getConditionReplacementRange (const IfStmt *If, const SourceManager &SM, const LangOptions &LangOpts)
static WarningType clang::tidy::readability::getWarningType (llvm::ArrayRef< const IfStmt * > Chain, const ASTContext &Context, const SourceManager &SM, const LangOptions &LangOpts, std::optional< std::string > *CombinedCondition)
static void clang::tidy::readability::emitNestedIfNotes (RedundantNestedIfCheck &Check, llvm::ArrayRef< const IfStmt * > Chain)
static void clang::tidy::readability::diagnoseChain (RedundantNestedIfCheck &Check, const IfStmt *If, ASTContext &Context, bool AllowUserDefinedBoolConversion)
static void clang::tidy::readability::diagnoseChildChain (RedundantNestedIfCheck &Check, const Stmt *Branch, ASTContext &Context, bool AllowUserDefinedBoolConversion)

Variables

static constexpr llvm::StringLiteral clang::tidy::readability::AllowUserDefinedBoolConversionStr
static constexpr llvm::StringLiteral clang::tidy::readability::MergeableIfDiag
static constexpr llvm::StringLiteral clang::tidy::readability::NestedIfNote