Author: Baranov Victor Date: 2026-08-04T16:35:40+03:00 New Revision: 0b71b1a4e51276043c7417a82ad87381f76cd4d6
URL: https://github.com/llvm/llvm-project/commit/0b71b1a4e51276043c7417a82ad87381f76cd4d6 DIFF: https://github.com/llvm/llvm-project/commit/0b71b1a4e51276043c7417a82ad87381f76cd4d6.diff LOG: [clang-tidy][NFC] Apply const-correctness for auto 5/N (#213843) Added: Modified: clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp clang-tools-extra/clang-tidy/misc/CoroutineHostileRAIICheck.cpp clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp clang-tools-extra/clang-tidy/misc/ExplicitConstructorCheck.cpp clang-tools-extra/clang-tidy/misc/MisleadingBidirectionalCheck.cpp clang-tools-extra/clang-tidy/misc/MisplacedConstCheck.cpp clang-tools-extra/clang-tidy/misc/NoRecursionCheck.cpp clang-tools-extra/clang-tidy/misc/NonCopyableObjectsCheck.cpp clang-tools-extra/clang-tidy/misc/NonPrivateMemberVariablesInClassesCheck.cpp clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp clang-tools-extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp clang-tools-extra/clang-tidy/modernize/AvoidCStyleCastCheck.cpp clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp clang-tools-extra/clang-tidy/modernize/DeprecatedIosBaseAliasesCheck.cpp clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.cpp clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp clang-tools-extra/clang-tidy/modernize/MinMaxUseInitializerListCheck.cpp clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp clang-tools-extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.cpp clang-tools-extra/clang-tidy/modernize/ReturnBracedInitListCheck.cpp clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp clang-tools-extra/clang-tidy/modernize/UseIntegerSignComparisonCheck.cpp clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp clang-tools-extra/clang-tidy/modernize/UseOverrideCheck.cpp clang-tools-extra/clang-tidy/modernize/UseScopedLockCheck.cpp clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp clang-tools-extra/clang-tidy/modernize/UseStdBitCheck.cpp clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp clang-tools-extra/clang-tidy/modernize/UseStructuredBindingCheck.cpp clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp clang-tools-extra/clang-tidy/modernize/UseUncaughtExceptionsCheck.cpp clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp index 88ee9fd58fd72..2385808ff7a7e 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp @@ -264,14 +264,14 @@ void ConstCorrectnessCheck::check(const MatchFinder::MatchResult &Result) { VC = VariableCategory::Pointer; } - auto CheckValue = [&]() { + const auto CheckValue = [&]() { // Offload const-analysis to utility function. if (isMutated(Variable, LocalScope, Function, Result.Context)) return; - auto Diag = diag(Variable->getBeginLoc(), - "variable %0 of type %1 can be declared 'const'") - << Variable << VT; + const auto Diag = diag(Variable->getBeginLoc(), + "variable %0 of type %1 can be declared 'const'") + << Variable << VT; if (IsNormalVariableInTemplate) TemplateDiagnosticsCache.insert(Variable->getBeginLoc()); if (!CanBeFixIt) @@ -302,12 +302,12 @@ void ConstCorrectnessCheck::check(const MatchFinder::MatchResult &Result) { } }; - auto CheckPointee = [&]() { + const auto CheckPointee = [&]() { assert(VC == VariableCategory::Pointer); registerScope(LocalScope, Result.Context); if (ScopesCache[LocalScope]->isPointeeMutated(Variable)) return; - auto Diag = + const auto Diag = diag(Variable->getBeginLoc(), "pointee of variable %0 of type %1 can be declared 'const'") << Variable << VT; diff --git a/clang-tools-extra/clang-tidy/misc/CoroutineHostileRAIICheck.cpp b/clang-tools-extra/clang-tidy/misc/CoroutineHostileRAIICheck.cpp index 75693a0c563e9..2169dffca5c51 100644 --- a/clang-tools-extra/clang-tidy/misc/CoroutineHostileRAIICheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/CoroutineHostileRAIICheck.cpp @@ -29,7 +29,7 @@ AST_MATCHER_P(Stmt, forEachPrevStmt, ast_matchers::internal::Matcher<Stmt>, DynTypedNode P; bool IsHostile = false; for (const Stmt *Child = &Node; Child; Child = P.get<Stmt>()) { - auto Parents = Finder->getASTContext().getParents(*Child); + const auto Parents = Finder->getASTContext().getParents(*Child); if (Parents.empty()) break; P = *Parents.begin(); @@ -68,7 +68,7 @@ static auto typeWithNameIn(const std::vector<StringRef> &Names) { } static auto functionWithNameIn(const std::vector<StringRef> &Names) { - auto Call = callExpr(callee(functionDecl(hasAnyName(Names)))); + const auto Call = callExpr(callee(functionDecl(hasAnyName(Names)))); return anyOf(expr(cxxBindTemporaryExpr(has(Call))), expr(Call)); } diff --git a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp index ae063a19d779d..edb742a3fe1ae 100644 --- a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp @@ -31,7 +31,7 @@ DefinitionsInHeadersCheck::DefinitionsInHeadersCheck(StringRef Name, : ClangTidyCheck(Name, Context) {} void DefinitionsInHeadersCheck::registerMatchers(MatchFinder *Finder) { - auto DefinitionMatcher = + const auto DefinitionMatcher = anyOf(functionDecl(isDefinition(), unless(isDeleted())), varDecl(isDefinition())); Finder->addMatcher( diff --git a/clang-tools-extra/clang-tidy/misc/ExplicitConstructorCheck.cpp b/clang-tools-extra/clang-tidy/misc/ExplicitConstructorCheck.cpp index 23261fe5af61b..2304aef84af3d 100644 --- a/clang-tools-extra/clang-tidy/misc/ExplicitConstructorCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ExplicitConstructorCheck.cpp @@ -81,9 +81,9 @@ void ExplicitConstructorCheck::check(const MatchFinder::MatchResult &Result) { else ConstructorDescription = "initializer-list"; - auto Diag = diag(Ctor->getLocation(), - "%0 constructor should not be declared explicit") - << ConstructorDescription; + const auto Diag = diag(Ctor->getLocation(), + "%0 constructor should not be declared explicit") + << ConstructorDescription; if (ExplicitTokenRange.isValid()) Diag << FixItHint::CreateRemoval(ExplicitTokenRange); return; @@ -105,7 +105,7 @@ void ExplicitConstructorCheck::check(const MatchFinder::MatchResult &Result) { const bool SingleArgument = Ctor->getNumParams() == 1 && !Ctor->getParamDecl(0)->isParameterPack(); const SourceLocation Loc = Ctor->getLocation(); - auto Diag = + const auto Diag = diag(Loc, ExplicitExpr ? WithExpressionWarningMessage : NoExpressionWarningMessage) << (SingleArgument diff --git a/clang-tools-extra/clang-tidy/misc/MisleadingBidirectionalCheck.cpp b/clang-tools-extra/clang-tidy/misc/MisleadingBidirectionalCheck.cpp index 894c6db8975f2..192f21b898081 100644 --- a/clang-tools-extra/clang-tidy/misc/MisleadingBidirectionalCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/MisleadingBidirectionalCheck.cpp @@ -78,7 +78,7 @@ static bool containsMisleadingBidi(StringRef Buffer, } // Close a PDI Context. else if (CodePoint == PDI) { - auto R = llvm::find(llvm::reverse(BidiContexts), PDI); + const auto R = llvm::find(llvm::reverse(BidiContexts), PDI); if (R != BidiContexts.rend()) BidiContexts.resize(BidiContexts.rend() - R - 1); } diff --git a/clang-tools-extra/clang-tidy/misc/MisplacedConstCheck.cpp b/clang-tools-extra/clang-tidy/misc/MisplacedConstCheck.cpp index a7daad4838c9d..a7da7502c7ef4 100644 --- a/clang-tools-extra/clang-tidy/misc/MisplacedConstCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/MisplacedConstCheck.cpp @@ -15,7 +15,7 @@ using namespace clang::ast_matchers; namespace clang::tidy::misc { void MisplacedConstCheck::registerMatchers(MatchFinder *Finder) { - auto NonConstAndNonFunctionPointerType = hasType(pointerType(unless( + const auto NonConstAndNonFunctionPointerType = hasType(pointerType(unless( pointee(anyOf(isConstQualified(), ignoringParens(functionType())))))); Finder->addMatcher( diff --git a/clang-tools-extra/clang-tidy/misc/NoRecursionCheck.cpp b/clang-tools-extra/clang-tidy/misc/NoRecursionCheck.cpp index ca269fd1d543c..599e7fbf0f21e 100644 --- a/clang-tools-extra/clang-tidy/misc/NoRecursionCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/NoRecursionCheck.cpp @@ -31,7 +31,7 @@ static CallStackTy pathfindSomeCycle(ArrayRef<CallGraphNode *> SCC) { llvm::from_range, SCC); // Is node N part if the current SCC? - auto NodeIsPartOfSCC = [&SCCElts](CallGraphNode *N) { + const auto NodeIsPartOfSCC = [&SCCElts](CallGraphNode *N) { return SCCElts.contains(N); }; diff --git a/clang-tools-extra/clang-tidy/misc/NonCopyableObjectsCheck.cpp b/clang-tools-extra/clang-tidy/misc/NonCopyableObjectsCheck.cpp index bfeb5fa855af6..eb3915bb3965b 100644 --- a/clang-tools-extra/clang-tidy/misc/NonCopyableObjectsCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/NonCopyableObjectsCheck.cpp @@ -36,7 +36,7 @@ void NonCopyableObjectsCheck::registerMatchers(MatchFinder *Finder) { hasType(namedDecl(hasAnyName("::pthread_cond_t", "::pthread_mutex_t", "pthread_cond_t", "pthread_mutex_t")) .bind("type_decl")); - auto BadEitherType = anyOf(BadFILEType, BadPOSIXType); + const auto BadEitherType = anyOf(BadFILEType, BadPOSIXType); Finder->addMatcher( namedDecl(anyOf(varDecl(BadFILEType), fieldDecl(BadFILEType))) diff --git a/clang-tools-extra/clang-tidy/misc/NonPrivateMemberVariablesInClassesCheck.cpp b/clang-tools-extra/clang-tidy/misc/NonPrivateMemberVariablesInClassesCheck.cpp index fffce2095d8d5..54cc5803956db 100644 --- a/clang-tools-extra/clang-tidy/misc/NonPrivateMemberVariablesInClassesCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/NonPrivateMemberVariablesInClassesCheck.cpp @@ -65,9 +65,9 @@ void NonPrivateMemberVariablesInClassesCheck::registerMatchers( // If we are ok with public fields, then we only want to complain about // protected fields, else we want to complain about all non-private fields. // We can ignore public member variables in structs/classes, in unions. - auto InterestingField = IgnorePublicMemberVariables - ? fieldDecl(isProtected()) - : fieldDecl(unless(isPrivate())); + const auto InterestingField = IgnorePublicMemberVariables + ? fieldDecl(isProtected()) + : fieldDecl(unless(isPrivate())); // We only want the records that not only contain the mutable data (non-static // member variables), but also have some logic (non-static, non-implicit diff --git a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp index 89dab5aa0ea9b..0c6df382d2a01 100644 --- a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp @@ -839,7 +839,7 @@ static bool areSidesBinaryConstExpressions(const BinaryOperator *&BinOp, if (!LhsBinOp || !RhsBinOp) return false; - auto IsIntegerConstantExpr = [AstCtx](const Expr *E) { + const auto IsIntegerConstantExpr = [AstCtx](const Expr *E) { return !E->isValueDependent() && E->isIntegerConstantExpr(*AstCtx); }; @@ -862,7 +862,7 @@ static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant( if (!Lhs || !Rhs) return false; - auto IsDefineExpr = [AstCtx](const Expr *E) { + const auto IsDefineExpr = [AstCtx](const Expr *E) { const SourceRange Lsr = E->getSourceRange(); if (!Lsr.getBegin().isMacroID() || E->isValueDependent() || !E->isIntegerConstantExpr(*AstCtx)) @@ -890,7 +890,7 @@ static bool retrieveConstExprFromBothSides(const BinaryOperator *&BinOp, const auto *BinOpLhs = cast<BinaryOperator>(BinOp->getLHS()); const auto *BinOpRhs = cast<BinaryOperator>(BinOp->getRHS()); - auto IsIntegerConstantExpr = [AstCtx](const Expr *E) { + const auto IsIntegerConstantExpr = [AstCtx](const Expr *E) { return !E->isValueDependent() && E->isIntegerConstantExpr(*AstCtx); }; @@ -1453,7 +1453,7 @@ void RedundantExpressionCheck::check(const MatchFinder::MatchResult &Result) { Result.Nodes.getNodeAs<UnaryOperator>("logical-bitwise-confusion")) { const SourceLocation OperatorLoc = NegateOperator->getOperatorLoc(); - auto Diag = + const auto Diag = diag(OperatorLoc, "ineffective logical negation operator used; did you mean '~'?"); const SourceLocation LogicalNotLocation = OperatorLoc.getLocWithOffset(1); @@ -1486,8 +1486,8 @@ void RedundantExpressionCheck::check(const MatchFinder::MatchResult &Result) { if (AndValue->getActiveBits() > *ShiftingValue) return; - auto Diag = diag(BinaryAndExpr->getOperatorLoc(), - "ineffective bitwise and operation"); + const auto Diag = diag(BinaryAndExpr->getOperatorLoc(), + "ineffective bitwise and operation"); } // Check for the following bound expressions: diff --git a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp index 554e759268330..f6189aaf5f928 100644 --- a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp @@ -31,7 +31,7 @@ void StaticAssertCheck::registerMatchers(MatchFinder *Finder) { expr(anyOf(cxxBoolLiteral(equals(false)), integerLiteral(equals(0)), cxxNullPtrLiteralExpr(), gnuNullExpr(), NegatedString)) .bind("isAlwaysFalse"); - auto IsAlwaysFalseWithCast = ignoringParenImpCasts(anyOf( + const auto IsAlwaysFalseWithCast = ignoringParenImpCasts(anyOf( IsAlwaysFalse, cStyleCastExpr(has(ignoringParenImpCasts(IsAlwaysFalse))) .bind("castExpr"))); auto AssertExprRoot = anyOf( @@ -56,7 +56,7 @@ void StaticAssertCheck::registerMatchers(MatchFinder *Finder) { ignoringParenCasts(AssertExprRoot))))))), unless(NonConstexprCode), unless(hasDescendant(NonConstexprCode))) .bind("condition"); - auto Condition = + const auto Condition = anyOf(ignoringParenImpCasts(callExpr( hasDeclaration(functionDecl(hasName("__builtin_expect"))), hasArgument(0, AssertCondition))), diff --git a/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp b/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp index 3d1fc88e7233a..a5b45ad935934 100644 --- a/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp @@ -310,7 +310,7 @@ reportCycles(ArrayRef<const VarUseNode *> SCC, clang::tidy::misc::StaticInitializationCycleCheck &Chk) { // Check if the SCC contains any variable, otherwise it is a function // recursion. - auto NodeIsVar = [](const VarUseNode *N) { return N->isVar(); }; + const auto NodeIsVar = [](const VarUseNode *N) { return N->isVar(); }; const auto *VarNode = llvm::find_if(SCC, NodeIsVar); if (VarNode == SCC.end()) return; diff --git a/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp b/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp index 1057fe21b7f05..95ce3fa11cd77 100644 --- a/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.cpp @@ -68,7 +68,7 @@ void ThrowByValueCatchByReferenceCheck::diagnoseThrowLocations( auto *SubExpr = ThrowExpr->getSubExpr(); if (!SubExpr) return; - auto QualType = SubExpr->getType(); + const auto QualType = SubExpr->getType(); if (QualType->isPointerType()) { // The code is throwing a pointer. // In case it is string literal, it is safe and we return. @@ -108,7 +108,7 @@ void ThrowByValueCatchByReferenceCheck::diagnoseThrowLocations( // If we have a copy / move construction, we emit a diagnosis message if // the object that we copy construct from is neither a function parameter // nor a variable declared in a catch statement - auto ArgIter = + const auto ArgIter = ConstructorCall ->arg_begin(); // there's only one for copy constructors auto *CurrentSubExpr = (*ArgIter)->IgnoreImpCasts(); @@ -129,10 +129,10 @@ void ThrowByValueCatchByReferenceCheck::diagnoseCatchLocations( const CXXCatchStmt *CatchStmt, ASTContext &Context) { if (!CatchStmt) return; - auto CaughtType = CatchStmt->getCaughtType(); + const auto CaughtType = CatchStmt->getCaughtType(); if (CaughtType.isNull()) return; - auto *VarDecl = CatchStmt->getExceptionDecl(); + const auto *VarDecl = CatchStmt->getExceptionDecl(); if (const auto *PT = CaughtType.getCanonicalType()->getAs<PointerType>()) { const char *DiagMsgCatchReference = "catch handler catches a pointer value; " diff --git a/clang-tools-extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp b/clang-tools-extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp index ab2077b304f13..fcc2a3db79e7d 100644 --- a/clang-tools-extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp @@ -59,7 +59,7 @@ getDeleterForUniquePtr(const MatchFinder::MatchResult &Result, StringRef ID) { Result.Nodes.getNodeAs<ClassTemplateSpecializationDecl>(ID); if (!Class) return nullptr; - auto DeleterArgument = Class->getTemplateArgs()[1]; + const auto DeleterArgument = Class->getTemplateArgs()[1]; if (DeleterArgument.getKind() != TemplateArgument::Type) return nullptr; return DeleterArgument.getAsType().getTypePtr(); @@ -126,8 +126,9 @@ void UniqueptrResetReleaseCheck::check(const MatchFinder::MatchResult &Result) { NeedsUtilityInclude = true; } - auto D = diag(ResetMember->getExprLoc(), - "prefer 'unique_ptr<>' assignment over 'release' and 'reset'"); + const auto D = + diag(ResetMember->getExprLoc(), + "prefer 'unique_ptr<>' assignment over 'release' and 'reset'"); if (ResetMember->isArrow()) D << FixItHint::CreateInsertion(ResetMember->getBeginLoc(), "*"); D << FixItHint::CreateReplacement( diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp index b95c829258b67..dabef7cc813cb 100644 --- a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp @@ -146,7 +146,8 @@ void UnusedParametersCheck::warnOnUnusedParameter( // Don't bother to diagnose invalid parameters as being unused. if (Param->isInvalidDecl()) return; - auto MyDiag = diag(Param->getLocation(), "parameter %0 is unused") << Param; + const auto MyDiag = diag(Param->getLocation(), "parameter %0 is unused") + << Param; if (!Indexer) Indexer = std::make_unique<IndexerVisitor>(*Result.Context); diff --git a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp index 309342a537ca7..887c2cd4c0963 100644 --- a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp @@ -56,7 +56,7 @@ void UnusedUsingDeclsCheck::registerMatchers(MatchFinder *Finder) { if (utils::isFileExtension(getCurrentMainFile(), getHeaderFileExtensions())) return; Finder->addMatcher(usingDecl(isExpansionInMainFile()).bind("using"), this); - auto DeclMatcher = hasDeclaration(namedDecl().bind("used")); + const auto DeclMatcher = hasDeclaration(namedDecl().bind("used")); Finder->addMatcher(loc(templateSpecializationType(DeclMatcher)), this); Finder->addMatcher(loc(deducedTemplateSpecializationType( refsToTemplatedDecl(namedDecl().bind("used")))), @@ -75,7 +75,8 @@ void UnusedUsingDeclsCheck::registerMatchers(MatchFinder *Finder) { // Cases where we can identify the UsingShadowDecl directly, rather than // just its target. // FIXME: cover more cases in this way, as the AST supports it. - auto ThroughShadowMatcher = throughUsingDecl(namedDecl().bind("usedShadow")); + const auto ThroughShadowMatcher = + throughUsingDecl(namedDecl().bind("usedShadow")); Finder->addMatcher(declRefExpr(ThroughShadowMatcher), this); Finder->addMatcher(loc(usingType(ThroughShadowMatcher)), this); } @@ -124,7 +125,7 @@ void UnusedUsingDeclsCheck::check(const MatchFinder::MatchResult &Result) { } // Mark a corresponding using declaration as used. - auto RemoveNamedDecl = [&](const NamedDecl *Used) { + const auto RemoveNamedDecl = [&](const NamedDecl *Used) { removeFromFoundDecls(Used); // Also remove variants of Used. if (const auto *FD = dyn_cast<FunctionDecl>(Used)) { @@ -162,7 +163,7 @@ void UnusedUsingDeclsCheck::check(const MatchFinder::MatchResult &Result) { } if (Used->getKind() == TemplateArgument::Type) { - if (auto *RD = Used->getAsType()->getAsCXXRecordDecl()) + if (const auto *RD = Used->getAsType()->getAsCXXRecordDecl()) removeFromFoundDecls(RD); return; } diff --git a/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp b/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp index dd8fb6889e14d..c9f63c3b5e2ce 100644 --- a/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp @@ -653,7 +653,7 @@ void AvoidBindCheck::check(const MatchFinder::MatchResult &Result) { const auto *MatchedDecl = Result.Nodes.getNodeAs<CallExpr>("bind"); LambdaProperties LP = getLambdaProperties(Result); - auto Diag = + const auto Diag = diag(MatchedDecl->getBeginLoc(), formatv("prefer a lambda to {0}::bind", LP.BindNamespace).str()); if (!LP.IsFixitSupported) diff --git a/clang-tools-extra/clang-tidy/modernize/AvoidCStyleCastCheck.cpp b/clang-tools-extra/clang-tidy/modernize/AvoidCStyleCastCheck.cpp index abf2d4ccb077b..98ca1a46be845 100644 --- a/clang-tools-extra/clang-tidy/modernize/AvoidCStyleCastCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/AvoidCStyleCastCheck.cpp @@ -79,7 +79,7 @@ static bool needsLeadingSpace(CharSourceRange Range, StringRef ReplacementText, if (Begin.isInvalid() || Begin.isMacroID()) return false; - auto BeginInfo = SM.getDecomposedLoc(Begin); + const auto BeginInfo = SM.getDecomposedLoc(Begin); bool Invalid = false; StringRef Buffer = SM.getBufferData(BeginInfo.first, &Invalid); if (Invalid || BeginInfo.second == 0) @@ -115,7 +115,7 @@ static bool sameTypeAsWritten(QualType X, QualType Y) { if (X.getCanonicalType() != Y.getCanonicalType()) return false; - auto TC = X->getTypeClass(); + const auto TC = X->getTypeClass(); if (TC != Y->getTypeClass()) return false; @@ -147,7 +147,7 @@ void AvoidCStyleCastCheck::check(const MatchFinder::MatchResult &Result) { if (CastExpr->getCastKind() == CK_ToVoid) return; - auto IsFunction = [](QualType T) { + const auto IsFunction = [](QualType T) { T = T.getCanonicalType().getNonReferenceType(); return T->isFunctionType() || T->isFunctionPointerType() || T->isMemberFunctionPointerType(); @@ -222,11 +222,11 @@ void AvoidCStyleCastCheck::check(const MatchFinder::MatchResult &Result) { CastText.insert(CastText.begin(), ' '); Diag << FixItHint::CreateReplacement(ReplaceRange, CastText); }; - auto ReplaceWithNamedCast = [&](StringRef CastType) { + const auto ReplaceWithNamedCast = [&](StringRef CastType) { Diag << CastType; ReplaceWithCast((CastType + "<" + DestTypeString + ">").str()); }; - auto ReplaceWithConstructorCall = [&]() { + const auto ReplaceWithConstructorCall = [&]() { Diag << "constructor call syntax"; // FIXME: Validate DestTypeString, maybe. ReplaceWithCast(DestTypeString.str()); diff --git a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp index 88c411fcc6633..702fbcd19f9ba 100644 --- a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp @@ -61,9 +61,9 @@ class ExternCRefutationVisitor !LinkSpecDecl->hasBraces()) return true; - auto ExternCBlockBegin = LinkSpecDecl->getBeginLoc(); - auto ExternCBlockEnd = LinkSpecDecl->getEndLoc(); - auto IsWrapped = [=, &SM = SM](const IncludeMarker &Marker) -> bool { + const auto ExternCBlockBegin = LinkSpecDecl->getBeginLoc(); + const auto ExternCBlockEnd = LinkSpecDecl->getEndLoc(); + const auto IsWrapped = [=, &SM = SM](const IncludeMarker &Marker) -> bool { return SM.isBeforeInTranslationUnit(ExternCBlockBegin, Marker.DiagLoc) && SM.isBeforeInTranslationUnit(Marker.DiagLoc, ExternCBlockEnd); }; @@ -187,7 +187,7 @@ void IncludeModernizePPCallbacks::InclusionDirective( // 2. Insert `using namespace std;` to the beginning of TU. // 3. Do nothing and let the user deal with the migration himself. const SourceLocation DiagLoc = FilenameRange.getBegin(); - if (auto It = CStyledHeaderToCxx.find(FileName); + if (const auto It = CStyledHeaderToCxx.find(FileName); It != CStyledHeaderToCxx.end()) { IncludesToBeProcessed.emplace_back(IncludeMarker{ It->second, FileName, FilenameRange.getAsRange(), DiagLoc}); diff --git a/clang-tools-extra/clang-tidy/modernize/DeprecatedIosBaseAliasesCheck.cpp b/clang-tools-extra/clang-tidy/modernize/DeprecatedIosBaseAliasesCheck.cpp index ddce19c00979c..96cca56a5944d 100644 --- a/clang-tools-extra/clang-tidy/modernize/DeprecatedIosBaseAliasesCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/DeprecatedIosBaseAliasesCheck.cpp @@ -28,8 +28,9 @@ static std::optional<const char *> getReplacementType(StringRef Type) { } void DeprecatedIosBaseAliasesCheck::registerMatchers(MatchFinder *Finder) { - auto IoStateDecl = typedefDecl(hasAnyName(DeprecatedTypes)).bind("TypeDecl"); - auto IoStateType = typedefType(hasDeclaration(IoStateDecl)); + const auto IoStateDecl = + typedefDecl(hasAnyName(DeprecatedTypes)).bind("TypeDecl"); + const auto IoStateType = typedefType(hasDeclaration(IoStateDecl)); Finder->addMatcher(typeLoc(loc(IoStateType)).bind("TypeLoc"), this); } @@ -43,7 +44,7 @@ void DeprecatedIosBaseAliasesCheck::check( auto Replacement = getReplacementType(TypeName); TypeLoc TL = *Result.Nodes.getNodeAs<TypeLoc>("TypeLoc"); - if (auto QTL = TL.getAs<QualifiedTypeLoc>()) + if (const auto QTL = TL.getAs<QualifiedTypeLoc>()) TL = QTL.getUnqualifiedLoc(); SourceLocation IoStateLoc = TL.castAs<TypedefTypeLoc>().getNameLoc(); @@ -60,9 +61,10 @@ void DeprecatedIosBaseAliasesCheck::check( if (Replacement) { const char *FixName = *Replacement; - auto Builder = diag(IoStateLoc, "'std::ios_base::%0' is deprecated; use " - "'std::ios_base::%1' instead") - << TypeName << FixName; + const auto Builder = + diag(IoStateLoc, "'std::ios_base::%0' is deprecated; use " + "'std::ios_base::%1' instead") + << TypeName << FixName; if (Fix) Builder << FixItHint::CreateReplacement(SourceRange(IoStateLoc, EndLoc), diff --git a/clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.cpp b/clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.cpp index 192ee21aca1c0..0f13528c07643 100644 --- a/clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.cpp +++ b/clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.cpp @@ -277,7 +277,7 @@ bool IntegralLiteralExpressionMatcher::conditionalExpr() { } bool IntegralLiteralExpressionMatcher::commaExpr() { - auto NonTerminal = [this] { return conditionalExpr(); }; + const auto NonTerminal = [this] { return conditionalExpr(); }; if (CommaAllowed) return nonTerminalChainedExpr<tok::TokenKind::comma>(NonTerminal); return nonTerminalChainedExpr(NonTerminal, [](Token) { return false; }); diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp index b0adf971ea4a6..6965569e6b87e 100644 --- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp @@ -156,15 +156,16 @@ static StatementMatcher makeArrayLoopMatcher() { /// Client code will need to make sure that: /// - The two containers on which 'begin' and 'end' are called are the same. static StatementMatcher makeIteratorLoopMatcher(bool IsReverse) { - auto BeginNameMatcher = IsReverse ? hasAnyName("rbegin", "crbegin") - : hasAnyName("begin", "cbegin"); - auto BeginNameMatcherStd = IsReverse - ? hasAnyName("::std::rbegin", "::std::crbegin") - : hasAnyName("::std::begin", "::std::cbegin"); + const auto BeginNameMatcher = IsReverse ? hasAnyName("rbegin", "crbegin") + : hasAnyName("begin", "cbegin"); + const auto BeginNameMatcherStd = + IsReverse ? hasAnyName("::std::rbegin", "::std::crbegin") + : hasAnyName("::std::begin", "::std::cbegin"); - auto EndNameMatcher = + const auto EndNameMatcher = IsReverse ? hasAnyName("rend", "crend") : hasAnyName("end", "cend"); - auto EndNameMatcherStd = IsReverse ? hasAnyName("::std::rend", "::std::crend") + const auto EndNameMatcherStd = IsReverse + ? hasAnyName("::std::rend", "::std::crend") : hasAnyName("::std::end", "::std::cend"); const StatementMatcher BeginCallMatcher = @@ -497,7 +498,7 @@ static bool isDirectMemberExpr(const Expr *E) { static bool canBeModified(ASTContext *Context, const Expr *E) { if (E->getType().isConstQualified()) return false; - auto Parents = Context->getParents(*E); + const auto Parents = Context->getParents(*E); if (Parents.size() != 1) return true; if (const auto *Cast = Parents[0].get<ImplicitCastExpr>()) { @@ -918,7 +919,7 @@ void LoopConvertCheck::getIteratorLoopQualifiers(ASTContext *Context, // A node will only be bound with DerefByRefResultName if we're dealing // with a user-defined iterator type. Test the const qualification of // the reference type. - auto ValueType = DerefType->getNonReferenceType(); + const auto ValueType = DerefType->getNonReferenceType(); Descriptor.DerefByConstRef = ValueType.isConstQualified(); Descriptor.ElemType = ValueType; diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp index ae97a7e0a0266..da86ecf6395ae 100644 --- a/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp +++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp @@ -591,7 +591,7 @@ bool ForLoopIndexUseVisitor::TraverseMemberExpr(MemberExpr *Member) { /// operator->(). The one exception is allowing vector::at() for pseudoarrays. bool ForLoopIndexUseVisitor::TraverseCXXMemberCallExpr( CXXMemberCallExpr *MemberCall) { - auto *Member = + const auto *Member = dyn_cast<MemberExpr>(MemberCall->getCallee()->IgnoreParenImpCasts()); if (!Member) return VisitorBase::TraverseCXXMemberCallExpr(MemberCall); diff --git a/clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp b/clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp index aa4732ceba7e0..3c25dd7bd3aa2 100644 --- a/clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp @@ -286,7 +286,7 @@ void MacroToEnumCallbacks::checkName(const Token &MacroNameTok) { void MacroToEnumCallbacks::rememberExpressionName(const Token &Tok) { const std::string Id = getTokenName(Tok).str(); - auto Pos = llvm::lower_bound(ExpressionNames, Id); + const auto Pos = llvm::lower_bound(ExpressionNames, Id); if (Pos == ExpressionNames.end() || *Pos != Id) ExpressionNames.insert(Pos, Id); } @@ -366,13 +366,14 @@ void MacroToEnumCallbacks::MacroUndefined(const Token &MacroNameTok, const MacroDirective *Undef) { rememberExpressionName(MacroNameTok); - auto MatchesToken = [&MacroNameTok](const EnumMacro &Macro) { + const auto MatchesToken = [&MacroNameTok](const EnumMacro &Macro) { return getTokenName(Macro.Name) == getTokenName(MacroNameTok); }; - auto *It = llvm::find_if(Enums, [MatchesToken](const MacroList &MacroList) { - return llvm::any_of(MacroList, MatchesToken); - }); + const auto *It = + llvm::find_if(Enums, [MatchesToken](const MacroList &MacroList) { + return llvm::any_of(MacroList, MatchesToken); + }); if (It != Enums.end()) Enums.erase(It); @@ -522,7 +523,7 @@ void MacroToEnumCheck::registerPPCallbacks(const SourceManager &SM, void MacroToEnumCheck::registerMatchers(ast_matchers::MatchFinder *Finder) { using namespace ast_matchers; - auto TopLevelDecl = hasParent(translationUnitDecl()); + const auto TopLevelDecl = hasParent(translationUnitDecl()); Finder->addMatcher(decl(TopLevelDecl).bind("top"), this); } diff --git a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp index 42a60bb897028..a2a98111be3f8 100644 --- a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp @@ -70,7 +70,7 @@ void MakeSmartPtrCheck::registerPPCallbacks(const SourceManager &SM, void MakeSmartPtrCheck::registerMatchers(ast_matchers::MatchFinder *Finder) { // Calling make_smart_ptr from within a member function of a type with a // private or protected constructor would be ill-formed. - auto CanCallCtor = unless(has(ignoringImpCasts( + const auto CanCallCtor = unless(has(ignoringImpCasts( cxxConstructExpr(hasDeclaration(decl(unless(isPublic()))))))); auto IsPlacement = hasAnyPlacementArg(anything()); @@ -256,7 +256,7 @@ void MakeSmartPtrCheck::checkReset(SourceManager &SM, ASTContext *Ctx, bool MakeSmartPtrCheck::replaceNew(DiagnosticBuilder &Diag, const CXXNewExpr *New, SourceManager &SM, ASTContext *Ctx) { - auto SkipParensParents = [&](const Expr *E) { + const auto SkipParensParents = [&](const Expr *E) { const TraversalKindScope RAII(*Ctx, TK_AsIs); for (const Expr *OldE = nullptr; E != OldE;) { @@ -292,7 +292,7 @@ bool MakeSmartPtrCheck::replaceNew(DiagnosticBuilder &Diag, // Foo(Bar{1, 2}) => true // Foo(1) => false // Foo{1} => false - auto HasListInitializedArgument = [](const CXXConstructExpr *CE) { + const auto HasListInitializedArgument = [](const CXXConstructExpr *CE) { for (const auto *Arg : CE->arguments()) { Arg = Arg->IgnoreImplicit(); diff --git a/clang-tools-extra/clang-tidy/modernize/MinMaxUseInitializerListCheck.cpp b/clang-tools-extra/clang-tidy/modernize/MinMaxUseInitializerListCheck.cpp index 3f61a2d5d8bba..acf1050732779 100644 --- a/clang-tools-extra/clang-tidy/modernize/MinMaxUseInitializerListCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/MinMaxUseInitializerListCheck.cpp @@ -218,9 +218,9 @@ void MinMaxUseInitializerListCheck::storeOptions( } void MinMaxUseInitializerListCheck::registerMatchers(MatchFinder *Finder) { - auto CreateMatcher = [](const StringRef FunctionName) { - auto FuncDecl = functionDecl(hasName(FunctionName)); - auto Expression = callExpr(callee(FuncDecl)); + const auto CreateMatcher = [](const StringRef FunctionName) { + const auto FuncDecl = functionDecl(hasName(FunctionName)); + const auto Expression = callExpr(callee(FuncDecl)); return callExpr(callee(FuncDecl), anyOf(hasArgument(0, Expression), diff --git a/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp b/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp index 77add86cb85c1..d1f0b16c26468 100644 --- a/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp @@ -293,7 +293,8 @@ void PassByValueCheck::check(const MatchFinder::MatchResult &Result) { if (hasRValueOverload(Ctor, ParamDecl)) return; - auto Diag = diag(ParamDecl->getBeginLoc(), "pass by value and use std::move"); + const auto Diag = + diag(ParamDecl->getBeginLoc(), "pass by value and use std::move"); // If we received a `const&` type, we need to rewrite the function // declarations. @@ -301,7 +302,7 @@ void PassByValueCheck::check(const MatchFinder::MatchResult &Result) { // Check if we can succesfully rewrite all declarations of the constructor. for (const ParmVarDecl *ParmDecl : collectParamDecls(Ctor, ParamDecl)) { const TypeLoc ParamTL = ParmDecl->getTypeSourceInfo()->getTypeLoc(); - auto RefTL = ParamTL.getAs<ReferenceTypeLoc>(); + const auto RefTL = ParamTL.getAs<ReferenceTypeLoc>(); if (RefTL.isNull()) { // We cannot rewrite this instance. The type is probably hidden behind // some `typedef`. Do not offer a fix-it in this case. @@ -311,7 +312,7 @@ void PassByValueCheck::check(const MatchFinder::MatchResult &Result) { // Rewrite all declarations. for (const ParmVarDecl *ParmDecl : collectParamDecls(Ctor, ParamDecl)) { const TypeLoc ParamTL = ParmDecl->getTypeSourceInfo()->getTypeLoc(); - auto RefTL = ParamTL.getAs<ReferenceTypeLoc>(); + const auto RefTL = ParamTL.getAs<ReferenceTypeLoc>(); const TypeLoc ValueTL = RefTL.getPointeeLoc(); const CharSourceRange TypeRange = CharSourceRange::getTokenRange( diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp index 6af05b11bb395..b55abf5fdae43 100644 --- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp @@ -49,8 +49,9 @@ void ReplaceAutoPtrCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { } void ReplaceAutoPtrCheck::registerMatchers(MatchFinder *Finder) { - auto AutoPtrDecl = recordDecl(hasName("auto_ptr"), isInStdNamespace()); - auto AutoPtrType = hasCanonicalType(recordType(hasDeclaration(AutoPtrDecl))); + const auto AutoPtrDecl = recordDecl(hasName("auto_ptr"), isInStdNamespace()); + const auto AutoPtrType = + hasCanonicalType(recordType(hasDeclaration(AutoPtrDecl))); // std::auto_ptr<int> a; // ^~~~~~~~~~~~~ @@ -76,7 +77,7 @@ void ReplaceAutoPtrCheck::registerMatchers(MatchFinder *Finder) { // std::auto_ptr<int> i, j; // i = j; // ~~~~^ - auto MovableArgumentMatcher = + const auto MovableArgumentMatcher = expr(isLValue(), hasType(AutoPtrType)).bind(AutoPtrOwnershipTransferId); Finder->addMatcher( @@ -107,10 +108,11 @@ void ReplaceAutoPtrCheck::check(const MatchFinder::MatchResult &Result) { if (Range.isInvalid()) return; - auto Diag = diag(Range.getBegin(), "use std::move to transfer ownership") - << FixItHint::CreateInsertion(Range.getBegin(), "std::move(") - << FixItHint::CreateInsertion(Range.getEnd(), ")") - << Inserter.createMainFileIncludeInsertion("<utility>"); + const auto Diag = + diag(Range.getBegin(), "use std::move to transfer ownership") + << FixItHint::CreateInsertion(Range.getBegin(), "std::move(") + << FixItHint::CreateInsertion(Range.getEnd(), ")") + << Inserter.createMainFileIncludeInsertion("<utility>"); return; } @@ -118,11 +120,11 @@ void ReplaceAutoPtrCheck::check(const MatchFinder::MatchResult &Result) { SourceLocation AutoPtrLoc; if (const auto *PTL = Result.Nodes.getNodeAs<TypeLoc>(AutoPtrTokenId)) { auto TL = *PTL; - if (auto QTL = TL.getAs<QualifiedTypeLoc>()) + if (const auto QTL = TL.getAs<QualifiedTypeLoc>()) TL = QTL.getUnqualifiedLoc(); // std::auto_ptr<int> i; // ^ - if (auto Loc = TL.getAs<TemplateSpecializationTypeLoc>()) + if (const auto Loc = TL.getAs<TemplateSpecializationTypeLoc>()) AutoPtrLoc = Loc.getTemplateNameLoc(); } else if (const auto *D = Result.Nodes.getNodeAs<UsingDecl>(AutoPtrTokenId)) { diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.cpp b/clang-tools-extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.cpp index cfc546a06b40c..e59898d60d9d3 100644 --- a/clang-tools-extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.cpp @@ -57,9 +57,9 @@ void ReplaceRandomShuffleCheck::check(const MatchFinder::MatchResult &Result) { if (MatchedCallExpr->getBeginLoc().isMacroID()) return; - auto Diag = [&] { + const auto Diag = [&] { if (MatchedCallExpr->getNumArgs() == 3) { - auto DiagL = + const auto DiagL = diag(MatchedCallExpr->getBeginLoc(), "'std::random_shuffle' has been removed in C++17; use " "'std::shuffle' and an alternative random mechanism instead"); @@ -68,9 +68,10 @@ void ReplaceRandomShuffleCheck::check(const MatchFinder::MatchResult &Result) { "std::mt19937(std::random_device()())"); return DiagL; } - auto DiagL = diag(MatchedCallExpr->getBeginLoc(), - "'std::random_shuffle' has been removed in C++17; use " - "'std::shuffle' instead"); + const auto DiagL = + diag(MatchedCallExpr->getBeginLoc(), + "'std::random_shuffle' has been removed in C++17; use " + "'std::shuffle' instead"); DiagL << FixItHint::CreateInsertion( MatchedCallExpr->getRParenLoc(), ", std::mt19937(std::random_device()())"); diff --git a/clang-tools-extra/clang-tidy/modernize/ReturnBracedInitListCheck.cpp b/clang-tools-extra/clang-tidy/modernize/ReturnBracedInitListCheck.cpp index 65da5b1a2b403..ef83044c0353d 100644 --- a/clang-tools-extra/clang-tidy/modernize/ReturnBracedInitListCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/ReturnBracedInitListCheck.cpp @@ -28,7 +28,7 @@ void ReturnBracedInitListCheck::registerMatchers(MatchFinder *Finder) { "::std::deque", "::std::forward_list", "::std::list")))); - auto ConstructExpr = + const auto ConstructExpr = cxxConstructExpr( unless(anyOf( // Skip explicit constructor. @@ -66,8 +66,9 @@ void ReturnBracedInitListCheck::check(const MatchFinder::MatchResult &Result) { if (ReturnType != ConstructType) return; - auto Diag = diag(Loc, "avoid repeating the return type from the " - "declaration; use a braced initializer list instead"); + const auto Diag = + diag(Loc, "avoid repeating the return type from the " + "declaration; use a braced initializer list instead"); const SourceRange CallParensRange = MatchedConstructExpr->getParenOrBraceRange(); diff --git a/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp index e831d0966cd58..af6f108006d16 100644 --- a/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp @@ -175,11 +175,11 @@ AST_POLYMORPHIC_MATCHER(isValue, AST_POLYMORPHIC_SUPPORTED_TYPES( } AST_MATCHER(TypeLoc, isType) { - if (auto TL = Node.getAs<TypedefTypeLoc>()) { + if (const auto TL = Node.getAs<TypedefTypeLoc>()) { const auto *TD = TL.getDecl(); return TD->getDeclName().isIdentifier() && TD->getName() == "type"; } - if (auto TL = Node.getAs<DependentNameTypeLoc>()) + if (const auto TL = Node.getAs<DependentNameTypeLoc>()) return TL.getTypePtr()->getIdentifier()->getName() == "type"; return false; } @@ -235,10 +235,11 @@ TypeTraitsCheck::TypeTraitsCheck(StringRef Name, ClangTidyContext *Context) IgnoreMacros(Options.get("IgnoreMacros", false)) {} void TypeTraitsCheck::check(const MatchFinder::MatchResult &Result) { - auto EmitValueWarning = [this, &Result](const NestedNameSpecifierLoc &QualLoc, + const auto EmitValueWarning = [this, + &Result](const NestedNameSpecifierLoc &QualLoc, SourceLocation EndLoc) { SourceLocation TemplateNameEndLoc; - if (auto TSTL = + if (const auto TSTL = QualLoc.getAsTypeLoc().getAs<TemplateSpecializationTypeLoc>()) TemplateNameEndLoc = Lexer::getLocForEndOfToken( TSTL.getTemplateNameLoc(), 0, *Result.SourceManager, @@ -258,11 +259,12 @@ void TypeTraitsCheck::check(const MatchFinder::MatchResult &Result) { << FixItHint::CreateRemoval({QualLoc.getEndLoc(), EndLoc}); }; - auto EmitTypeWarning = [this, &Result](const NestedNameSpecifierLoc &QualLoc, + const auto EmitTypeWarning = [this, + &Result](const NestedNameSpecifierLoc &QualLoc, SourceLocation EndLoc, SourceLocation TypenameLoc) { SourceLocation TemplateNameEndLoc; - if (auto TSTL = + if (const auto TSTL = QualLoc.getAsTypeLoc().getAs<TemplateSpecializationTypeLoc>()) TemplateNameEndLoc = Lexer::getLocForEndOfToken( TSTL.getTemplateNameLoc(), 0, *Result.SourceManager, @@ -277,7 +279,8 @@ void TypeTraitsCheck::check(const MatchFinder::MatchResult &Result) { diag(QualLoc.getBeginLoc(), "use c++14 style type templates"); return; } - auto Diag = diag(QualLoc.getBeginLoc(), "use c++14 style type templates"); + const auto Diag = + diag(QualLoc.getBeginLoc(), "use c++14 style type templates"); if (TypenameLoc.isValid()) Diag << FixItHint::CreateRemoval(TypenameLoc); @@ -325,15 +328,15 @@ void TypeTraitsCheck::check(const MatchFinder::MatchResult &Result) { if (const auto *TSTL = Result.Nodes.getNodeAs<TemplateSpecializationTypeLoc>( "remove_cvref")) { - auto InnerTL = TSTL->getArgLoc(0) - .getTypeSourceInfo() - ->getTypeLoc() - .castAs<TemplateSpecializationTypeLoc>(); + const auto InnerTL = TSTL->getArgLoc(0) + .getTypeSourceInfo() + ->getTypeLoc() + .castAs<TemplateSpecializationTypeLoc>(); if (IgnoreMacros && (TSTL->getBeginLoc().isMacroID() || InnerTL.getBeginLoc().isMacroID())) return; - auto Diag = diag(TSTL->getBeginLoc(), "use c++20 type alias"); + const auto Diag = diag(TSTL->getBeginLoc(), "use c++20 type alias"); Diag << FixItHint::CreateReplacement( SourceRange(TSTL->getBeginLoc(), InnerTL.getLAngleLoc()), "std::remove_cvref_t<") diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp index cebab03e2ab03..ca93f01e2ef9c 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp @@ -188,10 +188,10 @@ static TypeMatcher nestedIterator() { /// Returns a TypeMatcher that matches types declared with using /// declarations and which name standard iterators for standard containers. static TypeMatcher iteratorFromUsingDeclaration() { - auto HasIteratorDecl = hasDeclaration(namedDecl(hasStdIteratorName())); + const auto HasIteratorDecl = hasDeclaration(namedDecl(hasStdIteratorName())); // Unwrap the nested name specifier to test for one of the standard // containers. - auto Qualifier = hasQualifier(specifiesType(templateSpecializationType( + const auto Qualifier = hasQualifier(specifiesType(templateSpecializationType( hasDeclaration(namedDecl(hasStdContainerName(), isInStdNamespace()))))); // the named type is what comes after the final '::' in the type. It should // name one of the standard iterator names. @@ -238,14 +238,14 @@ static StatementMatcher makeDeclWithTemplateCastMatcher() { auto ST = substTemplateTypeParmType(hasReplacementType(equalsBoundNode("arg"))); - auto ExplicitCall = + const auto ExplicitCall = anyOf(has(memberExpr(hasExplicitTemplateArgs())), has(ignoringImpCasts(declRefExpr(hasExplicitTemplateArgs())))); - auto TemplateArg = + const auto TemplateArg = hasTemplateArgument(0, refersToType(qualType().bind("arg"))); - auto TemplateCall = callExpr( + const auto TemplateCall = callExpr( ExplicitCall, callee(functionDecl(TemplateArg, returns(anyOf(ST, pointsTo(ST), references(ST)))))); @@ -421,7 +421,7 @@ void UseAutoCheck::replaceExpr( MinTypeNameLength) return; - auto Diag = diag(Range.getBegin(), Message); + const auto Diag = diag(Range.getBegin(), Message); const bool ShouldReplenishVariableName = isMultiLevelPointerToTypeLocClasses( TSI->getTypeLoc(), {TypeLoc::FunctionProto, TypeLoc::ConstantArray}); diff --git a/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp index 6e2118787f9b4..a87811b368767 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp @@ -62,7 +62,7 @@ void UseBoolLiteralsCheck::check(const MatchFinder::MatchResult &Result) { if (InMacro && IgnoreMacros) return; - auto Diag = + const auto Diag = diag(Expression->getExprLoc(), "converting integer literal to bool, use bool literal instead"); diff --git a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp index 025290df43719..4dc78904f8bb5 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp @@ -29,7 +29,7 @@ struct EnableIfData { AST_MATCHER(FunctionDecl, hasOtherDeclarations) { auto It = Node.redecls_begin(); - auto EndIt = Node.redecls_end(); + const auto EndIt = Node.redecls_end(); if (It == EndIt) return false; @@ -331,7 +331,7 @@ static std::optional<std::string> getConditionText(const Expr *ConditionExpr, if (Invalid) return std::nullopt; - auto AddParens = [&](StringRef Text) -> std::string { + const auto AddParens = [&](StringRef Text) -> std::string { if (isPrimaryExpression(ConditionExpr)) return Text.str(); return "(" + Text.str() + ")"; diff --git a/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp index 35e9d8096e10e..abcca3365d172 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp @@ -298,16 +298,17 @@ void UseDefaultMemberInitCheck::storeOptions( } void UseDefaultMemberInitCheck::registerMatchers(MatchFinder *Finder) { - auto Init = anyOf( + const auto Init = anyOf( initListExpr(anyOf(allOf(initCountIs(1), hasInit(0, allowedInitExpr())), initCountIs(0), hasType(arrayType()))), allowedInitExpr()); - auto CandidateField = forField(unless(anyOf( + const auto CandidateField = forField(unless(anyOf( getLangOpts().CPlusPlus20 ? unless(anything()) : isBitField(), hasInClassInitializer(anything()), hasParent(recordDecl(isUnion()))))); - auto DefaultInit = cxxCtorInitializer(CandidateField, withInitializer(Init)); + const auto DefaultInit = + cxxCtorInitializer(CandidateField, withInitializer(Init)); auto VisibleDefaultInit = cxxCtorInitializer(DefaultInit, hasOnlyVisibleReferencedDecls()) .bind("visible-init"); @@ -368,7 +369,7 @@ void UseDefaultMemberInitCheck::checkDefaultInit( if (StartLoc.isMacroID() && IgnoreMacros) return; - auto DiagDefaultMemberInitializer = [&] { + const auto DiagDefaultMemberInitializer = [&] { return diag(Field->getLocation(), "use default member initializer for %0") << Field; }; @@ -382,7 +383,7 @@ void UseDefaultMemberInitCheck::checkDefaultInit( return; } - auto Diag = DiagDefaultMemberInitializer(); + const auto Diag = DiagDefaultMemberInitializer(); const SourceLocation FieldEnd = Lexer::getLocForEndOfToken(Field->getSourceRange().getEnd(), 0, diff --git a/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp index 5fcc03dea6b42..8ec123fc476ff 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp @@ -150,13 +150,14 @@ void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { // because this requires special treatment (it could cause performance // regression) // + match for emplace calls that should be replaced with insertion - auto CallPushBack = + const auto CallPushBack = cxxMemberCallExprOnContainer("push_back", ContainersWithPushBack); - auto CallPush = cxxMemberCallExprOnContainer("push", ContainersWithPush); - auto CallPushFront = + const auto CallPush = + cxxMemberCallExprOnContainer("push", ContainersWithPush); + const auto CallPushFront = cxxMemberCallExprOnContainer("push_front", ContainersWithPushFront); - auto CallEmplacy = cxxMemberCallExpr( + const auto CallEmplacy = cxxMemberCallExpr( hasDeclaration( functionDecl(hasAnyNameIgnoringTemplates(EmplacyFunctions))), on(hasTypeOrPointeeType( @@ -195,7 +196,7 @@ void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { // FIXME: Discard 0/NULL (as nullptr), static inline const data members, // overloaded functions and template names. - auto SoughtConstructExpr = + const auto SoughtConstructExpr = cxxConstructExpr( unless(anyOf(IsCtorOfSmartPtr, HasInitList, BitFieldAsArgument, InitializerListAsArgument, NewExprAsArgument, @@ -214,7 +215,7 @@ void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { anyOf(has(cxxBindTemporaryExpr(HasConstructInitListExpr)), HasConstructInitListExpr); - auto MakeTuple = ignoringImplicit( + const auto MakeTuple = ignoringImplicit( callExpr(callee(expr(ignoringImplicit(declRefExpr( unless(hasExplicitTemplateArgs()), to(functionDecl(hasAnyName(TupleMakeFunctions)))))))) @@ -222,11 +223,11 @@ void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { // make_something can return type convertible to container's element type. // Allow the conversion only on containers of pairs. - auto MakeTupleCtor = ignoringImplicit(cxxConstructExpr( + const auto MakeTupleCtor = ignoringImplicit(cxxConstructExpr( has(materializeTemporaryExpr(MakeTuple)), hasDeclaration(cxxConstructorDecl(ofClass(hasAnyName(TupleTypes)))))); - auto SoughtParam = + const auto SoughtParam = materializeTemporaryExpr( anyOf(has(MakeTuple), has(MakeTupleCtor), HasConstructExpr, HasBracedInitListExpr, @@ -247,7 +248,7 @@ void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { has(initListExpr(hasType(hasCanonicalType( type(equalsBoundNode("value_type"))))))))); - auto HasConstructExprWithValueTypeTypeAsLastArgument = hasLastArgument( + const auto HasConstructExprWithValueTypeTypeAsLastArgument = hasLastArgument( materializeTemporaryExpr( anyOf(HasConstructExprWithValueTypeType, HasBracedInitListWithValueTypeType, @@ -330,7 +331,7 @@ void UseEmplaceCheck::check(const MatchFinder::MatchResult &Result) { const auto FunctionNameSourceRange = CharSourceRange::getCharRange( Call->getExprLoc(), Call->getArg(0)->getExprLoc()); - auto Diag = + const auto Diag = EmplacyCall ? diag(TemporaryExpr ? TemporaryExpr->getBeginLoc() : CtorCall ? CtorCall->getBeginLoc() diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp index 137fdb577fca2..1535fa79676ab 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp @@ -38,7 +38,7 @@ getAllNamedFields(const CXXRecordDecl *Record) { static llvm::SmallPtrSet<const Type *, 0> getAllDirectBases(const CXXRecordDecl *Record) { llvm::SmallPtrSet<const Type *, 0> Result; - for (auto Base : Record->bases()) { + for (const auto Base : Record->bases()) { // CXXBaseSpecifier. const auto *BaseType = Base.getTypeSourceInfo()->getType().getTypePtr(); Result.insert(BaseType); @@ -68,8 +68,8 @@ static bool isCopyConstructorAndCanBeDefaulted(ASTContext *Context, const auto *Param = Ctor->getParamDecl(0); // Base classes and members that have to be copied. - auto BasesToInit = getAllDirectBases(Record); - auto FieldsToInit = getAllNamedFields(Record); + const auto BasesToInit = getAllDirectBases(Record); + const auto FieldsToInit = getAllNamedFields(Record); // Ensure that all the bases are copied. for (const auto *Base : BasesToInit) { @@ -128,8 +128,8 @@ static bool isCopyAssignmentAndCanBeDefaulted(ASTContext *Context, const auto *Param = Operator->getParamDecl(0); // Base classes and members that have to be copied. - auto BasesToInit = getAllDirectBases(Record); - auto FieldsToInit = getAllNamedFields(Record); + const auto BasesToInit = getAllDirectBases(Record); + const auto FieldsToInit = getAllNamedFields(Record); const auto *Compound = cast<CompoundStmt>(Operator->getBody()); @@ -183,9 +183,9 @@ static bool isCopyAssignmentAndCanBeDefaulted(ASTContext *Context, // Field = Other.Field; // Is a BinaryOperator in non-class types, and a CXXOperatorCallExpr // otherwise. - auto LHS = memberExpr(hasObjectExpression(cxxThisExpr()), - member(fieldDecl(equalsNode(Field)))); - auto RHS = accessToFieldInVar(Field, Param); + const auto LHS = memberExpr(hasObjectExpression(cxxThisExpr()), + member(fieldDecl(equalsNode(Field)))); + const auto RHS = accessToFieldInVar(Field, Param); if (match(traverse(TK_AsIs, compoundStmt(has(ignoringParenImpCasts(binaryOperation( hasOperatorName("="), hasLHS(LHS), hasRHS(RHS)))))), @@ -224,7 +224,7 @@ AST_MATCHER(CXXMethodDecl, isOutOfLine) { return Node.isOutOfLine(); } void UseEqualsDefaultCheck::registerMatchers(MatchFinder *Finder) { // Skip unions/union-like classes since their constructors behave diff erently // when defaulted vs. empty. - auto IsUnionLikeClass = recordDecl( + const auto IsUnionLikeClass = recordDecl( anyOf(isUnion(), has(fieldDecl(isImplicit(), hasType(cxxRecordDecl(isUnion())))))); @@ -339,7 +339,7 @@ void UseEqualsDefaultCheck::check(const MatchFinder::MatchResult &Result) { if (Location.isMacroID()) Location = Body->getBeginLoc(); - auto Diag = diag( + const auto Diag = diag( Location, "use '= default' to define a trivial %select{default constructor|copy " "constructor|destructor|copy-assignment operator}0"); diff --git a/clang-tools-extra/clang-tidy/modernize/UseIntegerSignComparisonCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseIntegerSignComparisonCheck.cpp index 8128acb055c84..3089350bbbe63 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseIntegerSignComparisonCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseIntegerSignComparisonCheck.cpp @@ -36,7 +36,7 @@ static BindableMatcher<Stmt> intCastExpression(bool IsSigned, // std::cmp_{} functions trigger a compile-time error if either LHS or RHS // is a non-integer type, char, enum or bool // (unsigned char/ signed char are Ok and can be used). - auto IntTypeExpr = expr(hasType(hasCanonicalType(qualType( + const auto IntTypeExpr = expr(hasType(hasCanonicalType(qualType( IsSigned ? isSignedInteger() : isUnsignedInteger(), unless(isActualChar()), unless(booleanType()), unless(enumType()))))); diff --git a/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp index caa3d8c00681e..5edb443d0fca5 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp @@ -82,9 +82,9 @@ void UseNodiscardCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { } void UseNodiscardCheck::registerMatchers(MatchFinder *Finder) { - auto FunctionObj = + const auto FunctionObj = cxxRecordDecl(hasAnyName("::std::function", "::boost::function")); - auto NoDiscardClassTemplateSpecialization = + const auto NoDiscardClassTemplateSpecialization = classTemplateSpecializationDecl(hasSpecializedTemplate(classTemplateDecl( has(cxxRecordDecl(hasAttr(attr::WarnUnusedResult)))))); @@ -122,8 +122,8 @@ void UseNodiscardCheck::check(const MatchFinder::MatchResult &Result) { ASTContext &Context = *Result.Context; - auto Diag = diag(RetLoc, "function %0 should be marked %1") - << MatchedDecl << NoDiscardMacro; + const auto Diag = diag(RetLoc, "function %0 should be marked %1") + << MatchedDecl << NoDiscardMacro; // Check for the existence of the keyword being used as the ``[[nodiscard]]``. if (!doesNoDiscardMacroExist(Context, NoDiscardMacro)) diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp index 5fe62915c062e..f1f42aac25e2a 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp @@ -55,7 +55,7 @@ void UseNullptrCheck::registerMatchers(MatchFinder *Finder) { unless(hasImplicitDestinationType( qualType(matchers::matchesAnyListedTypeName(IgnoredTypes))))); - auto IsOrHasDescendant = [](const auto &InnerMatcher) { + const auto IsOrHasDescendant = [](const auto &InnerMatcher) { return anyOf(InnerMatcher, hasDescendant(InnerMatcher)); }; diff --git a/clang-tools-extra/clang-tidy/modernize/UseOverrideCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseOverrideCheck.cpp index da90d23f83002..8513d511717c3 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseOverrideCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseOverrideCheck.cpp @@ -37,10 +37,10 @@ void UseOverrideCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { } void UseOverrideCheck::registerMatchers(MatchFinder *Finder) { - auto IgnoreDestructorMatcher = + const auto IgnoreDestructorMatcher = IgnoreDestructors ? cxxMethodDecl(unless(cxxDestructorDecl())) : cxxMethodDecl(); - auto IgnoreTemplateInstantiationsMatcher = + const auto IgnoreTemplateInstantiationsMatcher = IgnoreTemplateInstantiations ? cxxMethodDecl(unless(ast_matchers::isTemplateInstantiation())) : cxxMethodDecl(); @@ -135,8 +135,8 @@ void UseOverrideCheck::check(const MatchFinder::MatchResult &Result) { .str(); } - auto Diag = diag(Method->getLocation(), Message) - << OverrideSpelling << FinalSpelling; + const auto Diag = diag(Method->getLocation(), Message) + << OverrideSpelling << FinalSpelling; const CharSourceRange FileRange = Lexer::makeFileCharRange( CharSourceRange::getTokenRange(Method->getSourceRange()), Sources, diff --git a/clang-tools-extra/clang-tidy/modernize/UseScopedLockCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseScopedLockCheck.cpp index dabb3ffeb7c2b..79aabc3e28b47 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseScopedLockCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseScopedLockCheck.cpp @@ -84,7 +84,7 @@ findLocksInCompoundStmt(const CompoundStmt *Block, SmallVector<SmallVector<const VarDecl *>> LockGuardGroups; SmallVector<const VarDecl *> CurrentLockGuardGroup; - auto AddAndClearCurrentGroup = [&]() { + const auto AddAndClearCurrentGroup = [&]() { if (!CurrentLockGuardGroup.empty()) { LockGuardGroups.push_back(CurrentLockGuardGroup); CurrentLockGuardGroup.clear(); @@ -227,7 +227,7 @@ void UseScopedLockCheck::check(const MatchFinder::MatchResult &Result) { void UseScopedLockCheck::diagOnSingleLock( const VarDecl *LockGuard, const MatchFinder::MatchResult &Result) { - auto Diag = diag(LockGuard->getBeginLoc(), UseScopedLockMessage); + const auto Diag = diag(LockGuard->getBeginLoc(), UseScopedLockMessage); const SourceRange LockGuardTypeRange = getLockGuardRange(LockGuard->getTypeSourceInfo()); @@ -305,7 +305,7 @@ void UseScopedLockCheck::diagOnSourceInfo( const TypeLoc TL = LockGuardSourceInfo->getTypeLoc(); if (const auto TTL = TL.getAs<TemplateSpecializationTypeLoc>()) { - auto Diag = diag(TTL.getBeginLoc(), UseScopedLockMessage); + const auto Diag = diag(TTL.getBeginLoc(), UseScopedLockMessage); const SourceRange LockGuardRange = getLockGuardNameRange(LockGuardSourceInfo); diff --git a/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp index 97d71ef774924..159773be855fb 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp @@ -246,8 +246,9 @@ void UseStartsEndsWithCheck::check(const MatchFinder::MatchResult &Result) { CharSourceRange::getTokenRange(SearchExpr->getSourceRange()), *Result.SourceManager, Result.Context->getLangOpts()); - auto Diagnostic = diag(FindExpr->getExprLoc(), "use %0 instead of %1") - << ReplacementFunction->getName() << FindFun->getName(); + const auto Diagnostic = diag(FindExpr->getExprLoc(), "use %0 instead of %1") + << ReplacementFunction->getName() + << FindFun->getName(); // Remove everything before the function call. Diagnostic << FixItHint::CreateRemoval(CharSourceRange::getCharRange( diff --git a/clang-tools-extra/clang-tidy/modernize/UseStdBitCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStdBitCheck.cpp index b534757e89434..89d21e097a0a8 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStdBitCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStdBitCheck.cpp @@ -123,9 +123,9 @@ void UseStdBitCheck::check(const MatchFinder::MatchResult &Result) { Result.Nodes.getNodeAs<BinaryOperator>("has_single_bit_expr")) { const auto *MatchedVarDecl = Result.Nodes.getNodeAs<VarDecl>("v"); - auto Diag = + const auto Diag = diag(MatchedExpr->getBeginLoc(), "use 'std::has_single_bit' instead"); - if (auto R = MatchedExpr->getSourceRange(); + if (const auto R = MatchedExpr->getSourceRange(); !R.getBegin().isMacroID() && !R.getEnd().isMacroID()) { Diag << FixItHint::CreateReplacement( MatchedExpr->getSourceRange(), @@ -144,8 +144,9 @@ void UseStdBitCheck::check(const MatchFinder::MatchResult &Result) { const uint64_t MatchedVarSize = Context.getTypeSize(MatchedArg->getType()); if (BitsetSize < MatchedVarSize) return; - auto Diag = diag(MatchedExpr->getBeginLoc(), "use 'std::popcount' instead"); - if (auto R = MatchedExpr->getSourceRange(); + const auto Diag = + diag(MatchedExpr->getBeginLoc(), "use 'std::popcount' instead"); + if (const auto R = MatchedExpr->getSourceRange(); !R.getBegin().isMacroID() && !R.getEnd().isMacroID()) { Diag << FixItHint::CreateRemoval(CharSourceRange::getTokenRange( MatchedArg->getEndLoc().getLocWithOffset(1), @@ -195,9 +196,9 @@ void UseStdBitCheck::check(const MatchFinder::MatchResult &Result) { const StringRef ReplacementFuncName = IsRotl ? "rotl" : "rotr"; const uint64_t ReplacementShiftAmount = (IsRotl ? ShiftLeftAmount : ShiftRightAmount).getZExtValue(); - auto Diag = diag(MatchedExpr->getBeginLoc(), "use 'std::%0' instead") - << ReplacementFuncName; - if (auto R = MatchedExpr->getSourceRange(); + const auto Diag = diag(MatchedExpr->getBeginLoc(), "use 'std::%0' instead") + << ReplacementFuncName; + if (const auto R = MatchedExpr->getSourceRange(); R.getBegin().isMacroID() || R.getEnd().isMacroID()) return; diff --git a/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp index 912c2927d1aee..ad642178b7866 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp @@ -89,7 +89,7 @@ struct MatchBuilder { auto matchMathCall(const StringRef FunctionName, const Matcher<Expr> &ArgumentMatcher) const { - auto HasAnyPrecisionName = hasAnyName( + const auto HasAnyPrecisionName = hasAnyName( FunctionName, (FunctionName + "l").str(), (FunctionName + "f").str()); // Support long double(l) and float(f). return expr(ignoreParenAndFloatingCasting( diff --git a/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp index 3464c6ace8305..12773ffc7ee6d 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp @@ -39,7 +39,7 @@ AST_MATCHER(FunctionDecl, isOverloaded) { if (Name.isEmpty()) return false; const DeclContext *DC = Node.getDeclContext(); - auto LookupResult = DC->lookup(Name); + const auto LookupResult = DC->lookup(Name); size_t UniqueSignatures = 0; llvm::SmallPtrSet<const FunctionDecl *, 2> SeenFunctions; for (NamedDecl *ND : LookupResult) { @@ -76,7 +76,7 @@ static auto getStringTypeMatcher(StringRef CharType) { static void fixReturns(const FunctionDecl *FuncDecl, const DiagnosticBuilder &Diag, ASTContext &Context) { - auto Matches = match( + const auto Matches = match( findAll(returnStmt(hasReturnValue(ignoringParenImpCasts( cxxTemporaryObjectExpr(argumentCountIs(0)).bind("temp_obj_expr"))))), *FuncDecl->getBody(), Context); @@ -151,7 +151,7 @@ void UseStringViewCheck::check(const MatchFinder::MatchResult &Result) { .getAsString(); const StringRef DestReturnTypeStr = toStringViewTypeStr(DesugaredTypeStr); - auto Diag = + const auto Diag = diag(MatchedDecl->getTypeSpecStartLoc(), "consider using '%0' to avoid unnecessary copying and allocations") << DestReturnTypeStr; @@ -188,7 +188,7 @@ void UseStringViewCheck::parseReplacementStringViewClass(StringRef Options) { {U32StringViewClassKey, &U32StringViewClass}}; for (const auto &Option : utils::options::parseStringList(Options)) { const auto Split = Option.split('='); - if (auto It = StringClassesMap.find(Split.first); + if (const auto It = StringClassesMap.find(Split.first); It != StringClassesMap.end()) *It->second = Split.second; } diff --git a/clang-tools-extra/clang-tidy/modernize/UseStructuredBindingCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStructuredBindingCheck.cpp index ee1474d9eade1..5c6502c1b4f5e 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStructuredBindingCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStructuredBindingCheck.cpp @@ -45,7 +45,7 @@ static bool matchNVarDeclStartingWith( const size_t N = InnerMatchers.size(); size_t Count = 0; - auto Matches = [&](const Decl *VD) { + const auto Matches = [&](const Decl *VD) { // We don't want redundant decls in DeclStmt. if (Count == N) return false; @@ -204,32 +204,33 @@ static auto typeOrLValueReferenceTo( } void UseStructuredBindingCheck::registerMatchers(MatchFinder *Finder) { - auto PairType = qualType(unless(isVolatileQualified()), - hasUnqualifiedDesugaredType(recordType( - hasDeclaration(cxxRecordDecl(isPairType()))))); + const auto PairType = + qualType(unless(isVolatileQualified()), + hasUnqualifiedDesugaredType( + recordType(hasDeclaration(cxxRecordDecl(isPairType()))))); auto UnlessShouldBeIgnored = unless(anyOf(hasAnySpecifiersShouldBeIgnored(), isInMacro())); - auto VarInitWithFirstMember = + const auto VarInitWithFirstMember = getVarInitWithMemberMatcher(PairDeclName, "first", FirstTypeName, FirstVarDeclName, UnlessShouldBeIgnored); - auto VarInitWithSecondMember = + const auto VarInitWithSecondMember = getVarInitWithMemberMatcher(PairDeclName, "second", SecondTypeName, SecondVarDeclName, UnlessShouldBeIgnored); - auto RefToBindName = [&UnlessShouldBeIgnored](const StringRef &Name) { + const auto RefToBindName = [&UnlessShouldBeIgnored](const StringRef &Name) { return declRefExpr(to(varDecl(UnlessShouldBeIgnored).bind(Name))); }; - auto HasAnyLambdaCaptureThisVar = + const auto HasAnyLambdaCaptureThisVar = [](const ast_matchers::internal::Matcher<VarDecl> &VDMatcher) { return compoundStmt(hasDescendant( lambdaExpr(hasAnyCapture(capturesVar(varDecl(VDMatcher)))))); }; // Captured structured bindings are a C++20 extension - auto UnlessFirstVarOrSecondVarIsCapturedByLambda = + const auto UnlessFirstVarOrSecondVarIsCapturedByLambda = getLangOpts().CPlusPlus20 ? compoundStmt() : compoundStmt(unless(HasAnyLambdaCaptureThisVar( @@ -333,9 +334,10 @@ void UseStructuredBindingCheck::check(const MatchFinder::MatchResult &Result) { const auto *ScopeBlock = Result.Nodes.getNodeAs<CompoundStmt>(ScopeBlockName); const auto *CFRS = Result.Nodes.getNodeAs<CXXForRangeStmt>(ForRangeStmtName); - auto DiagAndFix = [&BeginDS, &EndDS, &FirstVar, &SecondVar, &CFRS, - this](SourceLocation DiagLoc, SourceRange ReplaceRange, - TransferType TT = TT_ByVal) { + const auto DiagAndFix = [&BeginDS, &EndDS, &FirstVar, &SecondVar, &CFRS, + this](SourceLocation DiagLoc, + SourceRange ReplaceRange, + TransferType TT = TT_ByVal) { const auto Prefix = [&TT]() -> StringRef { switch (TT) { case TT_ByVal: @@ -387,8 +389,8 @@ void UseStructuredBindingCheck::check(const MatchFinder::MatchResult &Result) { // Check PairVar is not used except for assignment members to firstVar and // SecondVar. - if (auto AllRef = utils::decl_ref_expr::allDeclRefExprs(*PairVar, *ScopeBlock, - *Result.Context); + if (const auto AllRef = utils::decl_ref_expr::allDeclRefExprs( + *PairVar, *ScopeBlock, *Result.Context); AllRef.size() != 2) return; diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp index 27be649c151bf..b4feecbd22a10 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp @@ -70,7 +70,7 @@ struct UnqualNameVisitor : public RecursiveASTVisitor<UnqualNameVisitor> { case TypeLoc::InjectedClassName: case TypeLoc::Record: case TypeLoc::Enum: { - auto TTL = TL.getAs<TagTypeLoc>(); + const auto TTL = TL.getAs<TagTypeLoc>(); const auto *T = TTL.getTypePtr(); if (T->getKeyword() != ElaboratedTypeKeyword::None || TTL.getQualifierLoc()) @@ -80,7 +80,7 @@ struct UnqualNameVisitor : public RecursiveASTVisitor<UnqualNameVisitor> { break; } case TypeLoc::TemplateSpecialization: { - auto TTL = TL.getAs<TemplateSpecializationTypeLoc>(); + const auto TTL = TL.getAs<TemplateSpecializationTypeLoc>(); const auto *T = TTL.getTypePtr(); if (T->getKeyword() != ElaboratedTypeKeyword::None || TTL.getQualifierLoc()) @@ -90,7 +90,7 @@ struct UnqualNameVisitor : public RecursiveASTVisitor<UnqualNameVisitor> { break; } case TypeLoc::Typedef: { - auto TTL = TL.getAs<TypedefTypeLoc>(); + const auto TTL = TL.getAs<TypedefTypeLoc>(); const auto *T = TTL.getTypePtr(); if (T->getKeyword() != ElaboratedTypeKeyword::None || TTL.getQualifierLoc()) @@ -100,7 +100,7 @@ struct UnqualNameVisitor : public RecursiveASTVisitor<UnqualNameVisitor> { break; } case TypeLoc::Using: { - auto TTL = TL.getAs<UsingTypeLoc>(); + const auto TTL = TL.getAs<UsingTypeLoc>(); const auto *T = TTL.getTypePtr(); if (T->getKeyword() != ElaboratedTypeKeyword::None || TTL.getQualifierLoc()) @@ -478,7 +478,7 @@ void UseTrailingReturnTypeCheck::storeOptions( } void UseTrailingReturnTypeCheck::registerMatchers(MatchFinder *Finder) { - auto F = + const auto F = functionDecl( unless(anyOf( hasTrailingReturn(), returns(voidType()), cxxConversionDecl(), @@ -544,7 +544,7 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) { if (!TSI) return; - auto FTL = TSI->getTypeLoc().IgnoreParens().getAs<FunctionTypeLoc>(); + const auto FTL = TSI->getTypeLoc().IgnoreParens().getAs<FunctionTypeLoc>(); if (!FTL) { // FIXME: This may happen if we have __attribute__((...)) on the function. // We abort for now. Remove this when the function type location gets diff --git a/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp index 9623c885534a6..73d602b7e4e40 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp @@ -106,7 +106,7 @@ void UseTransparentFunctorsCheck::check( if (ArgNum == FunctorParentType->template_arguments().size()) return; const TemplateArgumentLoc FunctorLoc = FunctorParentLoc.getArgLoc(ArgNum); - auto FunctorTypeLoc = getInnerTypeLocAs<TemplateSpecializationTypeLoc>( + const auto FunctorTypeLoc = getInnerTypeLocAs<TemplateSpecializationTypeLoc>( FunctorLoc.getTypeSourceInfo()->getTypeLoc()); if (FunctorTypeLoc.isNull()) return; diff --git a/clang-tools-extra/clang-tidy/modernize/UseUncaughtExceptionsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseUncaughtExceptionsCheck.cpp index ae61ffa3ba863..c382334925be5 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseUncaughtExceptionsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseUncaughtExceptionsCheck.cpp @@ -29,7 +29,7 @@ void UseUncaughtExceptionsCheck::registerMatchers(MatchFinder *Finder) { .bind("decl_ref_expr"), this); - auto DirectCallToUncaughtException = callee(expr(ignoringImpCasts( + const auto DirectCallToUncaughtException = callee(expr(ignoringImpCasts( declRefExpr(hasDeclaration(functionDecl(hasName(MatchText))))))); // CallExpr: warning, fix-it. @@ -69,8 +69,9 @@ void UseUncaughtExceptionsCheck::check(const MatchFinder::MatchResult &Result) { EndLoc = U->getNameInfo().getEndLoc(); } - auto Diag = diag(BeginLoc, "'std::uncaught_exception' is deprecated, use " - "'std::uncaught_exceptions' instead"); + const auto Diag = + diag(BeginLoc, "'std::uncaught_exception' is deprecated, use " + "'std::uncaught_exceptions' instead"); if (!BeginLoc.isMacroID()) { StringRef Text = diff --git a/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp index cbb3babe9d472..504a2c40bcfff 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp @@ -456,10 +456,10 @@ void UseUsingCheck::check(const MatchFinder::MatchResult &Result) { LastReplacementEnd = ReplaceRange.getEnd().getLocWithOffset(Offset); } - auto Diag = diag(ReplaceRange.getBegin(), UseUsingWarning); + const auto Diag = diag(ReplaceRange.getBegin(), UseUsingWarning); // If typedef contains a full tag declaration, extract its full text. - auto LastTagDeclRange = LastTagDeclRanges.find(ParentDecl); + const auto LastTagDeclRange = LastTagDeclRanges.find(ParentDecl); if (LastTagDeclRange != LastTagDeclRanges.end() && LastTagDeclRange->second.isValid() && ReplaceRange.fullyContains(LastTagDeclRange->second)) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
