A couple of tweaks to make -ast-print produce code that's closer to 
valid C code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71971 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp
index cf1a255..380634d 100644
--- a/lib/AST/StmtPrinter.cpp
+++ b/lib/AST/StmtPrinter.cpp
@@ -289,9 +289,9 @@
     Indent();
   }
   
-  OS << "while ";
+  OS << "while (";
   PrintExpr(Node->getCond());
-  OS << ";\n";
+  OS << ");\n";
 }
 
 void StmtPrinter::VisitForStmt(ForStmt *Node) {
diff --git a/tools/clang-cc/ASTConsumers.cpp b/tools/clang-cc/ASTConsumers.cpp
index d68b61c..48bf85b 100644
--- a/tools/clang-cc/ASTConsumers.cpp
+++ b/tools/clang-cc/ASTConsumers.cpp
@@ -141,19 +141,20 @@
     if (const IdentifierInfo *II = TD->getIdentifier())
       Out << II->getName();
 
-    Out << " {\n";
-    ChangeIndent(1);
-    // FIXME: Shouldn't pass a NULL context
-    ASTContext *Context = 0;
-    for (DeclContext::decl_iterator i = TD->decls_begin(*Context);
-         i != TD->decls_end(*Context);
-         ++i)
-      PrintDecl(*i);    
-    ChangeIndent(-1);
-    Indent();
-    Out << "}";
-
-    Out << "\n";
+    if (TD->isDefinition()) {
+      Out << " {\n";
+      ChangeIndent(1);
+      // FIXME: Shouldn't pass a NULL context
+      ASTContext *Context = 0;
+      for (DeclContext::decl_iterator i = TD->decls_begin(*Context);
+           i != TD->decls_end(*Context);
+           ++i)
+        PrintDecl(*i);    
+      ChangeIndent(-1);
+      Indent();
+      Out << "}";
+    }
+    Out << ";\n";
   } else if (TemplateDecl *TempD = dyn_cast<TemplateDecl>(D)) {
     PrintTemplateDecl(TempD);
   } else if (LinkageSpecDecl *LSD = dyn_cast<LinkageSpecDecl>(D)) {