From: Ted Kremenek Date: Fri, 2 May 2008 17:32:38 +0000 (+0000) Subject: Bug fix in StmtPrinter to handle pretty-printing ObjCMessageExprs involving variadic... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c29efd829a638fff380284f43c79355b98e2a2ab;p=clang Bug fix in StmtPrinter to handle pretty-printing ObjCMessageExprs involving variadic methods (also did some cosmetic cleanups in the printing output). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50583 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp index f838633171..bd6d0d44bf 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -822,15 +822,21 @@ void StmtPrinter::VisitObjCMessageExpr(ObjCMessageExpr *Mess) { Expr *receiver = Mess->getReceiver(); if (receiver) PrintExpr(receiver); else OS << Mess->getClassName()->getName(); + OS << ' '; Selector selector = Mess->getSelector(); if (selector.isUnarySelector()) { - OS << " " << selector.getIdentifierInfoForSlot(0)->getName(); + OS << selector.getIdentifierInfoForSlot(0)->getName(); } else { for (unsigned i = 0, e = Mess->getNumArgs(); i != e; ++i) { - if (selector.getIdentifierInfoForSlot(i)) - OS << selector.getIdentifierInfoForSlot(i)->getName() << ":"; - else - OS << ":"; + if (i < selector.getNumArgs()) { + if (i > 0) OS << ' '; + if (selector.getIdentifierInfoForSlot(i)) + OS << selector.getIdentifierInfoForSlot(i)->getName() << ":"; + else + OS << ":"; + } + else OS << ", "; // Handle variadic methods. + PrintExpr(Mess->getArg(i)); } }