diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp
index f838633..bd6d0d4 100644
--- a/lib/AST/StmtPrinter.cpp
+++ b/lib/AST/StmtPrinter.cpp
@@ -822,15 +822,21 @@
   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));
     }
   }
