]> granicus.if.org Git - clang/commitdiff
Bug fix in StmtPrinter to handle pretty-printing ObjCMessageExprs involving variadic...
authorTed Kremenek <kremenek@apple.com>
Fri, 2 May 2008 17:32:38 +0000 (17:32 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 2 May 2008 17:32:38 +0000 (17:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50583 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/StmtPrinter.cpp

index f838633171c57b82f87ab862835ed13d90f8c23a..bd6d0d44bf21c7a64b59b918e293a9cef3c1bdae 100644 (file)
@@ -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));
     }
   }