@@ -89,9 +89,9 @@ MinMaxUseInitializerListCheck::findArgs(const MatchFinder::MatchResult &Match,
89
89
Result.Compare = nullptr ;
90
90
91
91
if (Call->getNumArgs () > 2 ) {
92
- auto argIterator = Call->arguments ().begin ();
93
- std::advance (argIterator , 2 );
94
- Result.Compare = *argIterator ;
92
+ auto ArgIterator = Call->arguments ().begin ();
93
+ std::advance (ArgIterator , 2 );
94
+ Result.Compare = *ArgIterator ;
95
95
}
96
96
97
97
for (const Expr *Arg : Call->arguments ()) {
@@ -153,15 +153,20 @@ std::string MinMaxUseInitializerListCheck::generateReplacement(
153
153
for (const Expr *Arg : Result.Args ) {
154
154
QualType ArgType = Arg->getType ();
155
155
156
- // check if expression is std::min or std::max
157
156
if (const auto *InnerCall = dyn_cast<CallExpr>(Arg)) {
158
- if (InnerCall->getDirectCallee () &&
159
- InnerCall->getDirectCallee ()->getNameAsString () !=
160
- TopCall->getDirectCallee ()->getNameAsString ()) {
161
- FindArgsResult innerResult = findArgs (Match, InnerCall);
162
- ReplacementText += generateReplacement (Match, InnerCall, innerResult) +=
163
- " })" ;
164
- continue ;
157
+ if (InnerCall->getDirectCallee ()) {
158
+ std::string InnerCallNameStr =
159
+ InnerCall->getDirectCallee ()->getQualifiedNameAsString ();
160
+
161
+ if (InnerCallNameStr !=
162
+ TopCall->getDirectCallee ()->getQualifiedNameAsString () &&
163
+ (InnerCallNameStr == " std::min" ||
164
+ InnerCallNameStr == " std::max" )) {
165
+ FindArgsResult innerResult = findArgs (Match, InnerCall);
166
+ ReplacementText +=
167
+ generateReplacement (Match, InnerCall, innerResult) + " , " ;
168
+ continue ;
169
+ }
165
170
}
166
171
}
167
172
0 commit comments