Lines Matching defs:LoopVar
50 auto LoopVar =
57 cxxForRangeStmt(hasLoopVariable(LoopVar.bind("loopVar")))
74 bool ForRangeCopyCheck::handleConstValueCopy(const VarDecl &LoopVar,
78 if (!isa<AutoType>(LoopVar.getType()))
80 } else if (!LoopVar.getType().isConstQualified()) {
84 utils::type_traits::isExpensiveToCopy(LoopVar.getType(), Context);
88 diag(LoopVar.getLocation(),
91 << utils::fixit::changeVarDeclToReference(LoopVar, Context);
92 if (!LoopVar.getType().isConstQualified()) {
94 LoopVar, Context, Qualifiers::Const))
100 static bool isReferenced(const VarDecl &LoopVar, const Stmt &Stmt,
102 const auto IsLoopVar = varDecl(equalsNode(&LoopVar));
110 const VarDecl &LoopVar, const CXXForRangeStmt &ForRange,
113 utils::type_traits::isExpensiveToCopy(LoopVar.getType(), Context);
114 if (LoopVar.getType().isConstQualified() || !Expensive || !*Expensive)
124 if (!ExprMutationAnalyzer(*ForRange.getBody(), Context).isMutated(&LoopVar) &&
125 isReferenced(LoopVar, *ForRange.getBody(), Context)) {
127 LoopVar.getLocation(),
132 LoopVar, Context, Qualifiers::Const))
133 Diag << *Fix << utils::fixit::changeVarDeclToReference(LoopVar, Context);