[clang] [clang][ExprConst] Fix rendering of explicit this parameters (PR #177551)

Oliver Hunt via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 28 02:26:50 PST 2026


================
@@ -2012,20 +2014,17 @@ void CallStackFrame::describe(raw_ostream &Out) const {
 
   Out << '(';
 
-  for (FunctionDecl::param_const_iterator I = Callee->param_begin(),
-       E = Callee->param_end(); I != E; ++I, ++ArgIndex) {
-    if (ArgIndex > (unsigned)IsMemberCall)
-      Out << ", ";
+  llvm::ListSeparator Comma;
+  for (unsigned ArgIndex = ExplicitInstanceParam, N = Callee->getNumParams();
+       ArgIndex != N; ++ArgIndex) {
+    Out << Comma;
 
-    const ParmVarDecl *Param = *I;
-    APValue *V = Info.getParamSlot(Arguments, Param);
+    const ParmVarDecl *Param = Callee->getParamDecl(ArgIndex);
+    const APValue *V = Info.getParamSlot(Arguments, Param);
     if (V)
       V->printPretty(Out, Info.Ctx, Param->getType());
     else
       Out << "<...>";
-
-    if (ArgIndex == 0 && IsMemberCall)
-      Out << "->" << *Callee << '(';
----------------
ojhunt wrote:

I was trying to work out how this was dead code -- setting IsMemberCall to false after doing the initial output seems destined to cause confusing bugs later on. Given this pr removes the use of IsMemberCall that required it to always be false I think that assignment should be removed.

https://github.com/llvm/llvm-project/pull/177551


More information about the cfe-commits mailing list