]> granicus.if.org Git - clang/commitdiff
DeclPrinter, terse mode: don't print function bodies
authorDmitri Gribenko <gribozavr@gmail.com>
Tue, 21 Aug 2012 17:47:24 +0000 (17:47 +0000)
committerDmitri Gribenko <gribozavr@gmail.com>
Tue, 21 Aug 2012 17:47:24 +0000 (17:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162294 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclPrinter.cpp
unittests/AST/DeclPrinterTest.cpp

index d96b6e57c6c8885c15c261d970b3edad29609396..4cba2b0977fadcd9340b364ec3da9718f71f306e 100644 (file)
@@ -553,7 +553,7 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) {
     Out << " = 0";
   else if (D->isDeletedAsWritten())
     Out << " = delete";
-  else if (D->doesThisDeclarationHaveABody()) {
+  else if (D->doesThisDeclarationHaveABody() && !Policy.TerseOutput) {
     if (!D->hasPrototype() && D->getNumParams()) {
       // This is a K&R function definition, so we need to print the
       // parameters.
index 029249922527e4d90e712068a5fccf1257cd65ba..268d48e50fa85615d1f6ff25e1de3fdb6200bd9a 100644 (file)
@@ -295,6 +295,23 @@ TEST(DeclPrinter, TestFunctionDecl1) {
 }
 
 TEST(DeclPrinter, TestFunctionDecl2) {
+  ASSERT_TRUE(PrintedDeclMatches(
+    "void A() {}",
+    "A",
+    "void A()"));
+    // Should be: with semicolon
+}
+
+TEST(DeclPrinter, TestFunctionDecl3) {
+  ASSERT_TRUE(PrintedDeclMatches(
+    "void Z();"
+    "void A() { Z(); }",
+    "A",
+    "void A()"));
+    // Should be: with semicolon
+}
+
+TEST(DeclPrinter, TestFunctionDecl4) {
   ASSERT_TRUE(PrintedDeclMatches(
     "extern void A();",
     "A",
@@ -302,7 +319,7 @@ TEST(DeclPrinter, TestFunctionDecl2) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl3) {
+TEST(DeclPrinter, TestFunctionDecl5) {
   ASSERT_TRUE(PrintedDeclMatches(
     "static void A();",
     "A",
@@ -310,7 +327,7 @@ TEST(DeclPrinter, TestFunctionDecl3) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl4) {
+TEST(DeclPrinter, TestFunctionDecl6) {
   ASSERT_TRUE(PrintedDeclMatches(
     "inline void A();",
     "A",
@@ -318,7 +335,7 @@ TEST(DeclPrinter, TestFunctionDecl4) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl5) {
+TEST(DeclPrinter, TestFunctionDecl7) {
   ASSERT_TRUE(PrintedDeclCXX11Matches(
     "constexpr int A(int a);",
     "A",
@@ -326,7 +343,7 @@ TEST(DeclPrinter, TestFunctionDecl5) {
     // WRONG; Should be: "constexpr int A(int a);"
 }
 
-TEST(DeclPrinter, TestFunctionDecl6) {
+TEST(DeclPrinter, TestFunctionDecl8) {
   ASSERT_TRUE(PrintedDeclMatches(
     "void A(int a);",
     "A",
@@ -334,7 +351,7 @@ TEST(DeclPrinter, TestFunctionDecl6) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl7) {
+TEST(DeclPrinter, TestFunctionDecl9) {
   ASSERT_TRUE(PrintedDeclMatches(
     "void A(...);",
     "A",
@@ -342,7 +359,7 @@ TEST(DeclPrinter, TestFunctionDecl7) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl8) {
+TEST(DeclPrinter, TestFunctionDecl10) {
   ASSERT_TRUE(PrintedDeclMatches(
     "void A(int a, ...);",
     "A",
@@ -350,7 +367,7 @@ TEST(DeclPrinter, TestFunctionDecl8) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl9) {
+TEST(DeclPrinter, TestFunctionDecl11) {
   ASSERT_TRUE(PrintedDeclMatches(
     "typedef long size_t;"
     "typedef int *pInt;"
@@ -360,7 +377,7 @@ TEST(DeclPrinter, TestFunctionDecl9) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl10) {
+TEST(DeclPrinter, TestFunctionDecl12) {
   ASSERT_TRUE(PrintedDeclMatches(
     "void A(int a, int b = 0);",
     "A",
@@ -368,7 +385,7 @@ TEST(DeclPrinter, TestFunctionDecl10) {
     // Should be: with semicolon
 }
 
-TEST(DeclPrinter, TestFunctionDecl11) {
+TEST(DeclPrinter, TestFunctionDecl13) {
   ASSERT_TRUE(PrintedDeclMatches(
     "void (*A(int a))(int b);",
     "A",
@@ -376,14 +393,14 @@ TEST(DeclPrinter, TestFunctionDecl11) {
     // Should be: with semicolon, with parameter name (?)
 }
 
-TEST(DeclPrinter, TestFunctionDecl12) {
+TEST(DeclPrinter, TestFunctionDecl14) {
   ASSERT_TRUE(PrintedDeclMatches(
     "template<typename T>"
     "void A(T t) { }"
     "template<>"
     "void A(int N) { }",
     function(hasName("A"), isExplicitTemplateSpecialization()).bind("id"),
-    "void A(int N) {\n}\n\n"));
+    "void A(int N)"));
     // WRONG; Should be: "template <> void A(int N);"));
 }
 
@@ -1004,8 +1021,8 @@ TEST(DeclPrinter, TestFunctionTemplateDecl2) {
     "template<typename T>"
     "void A(T &t) { }",
     functionTemplate(hasName("A")).bind("id"),
-    "template <typename T> void A(T &t) {\n}\n\n"));
-    // Should be: without body, with semicolon
+    "template <typename T> void A(T &t)"));
+    // Should be: with semicolon
 }
 
 TEST(DeclPrinter, TestFunctionTemplateDecl3) {
@@ -1031,8 +1048,8 @@ TEST(DeclPrinter, TestFunctionTemplateDecl5) {
   ASSERT_TRUE(PrintedDeclMatches(
     "struct Z { template<typename T> void A(T t) {} };",
     functionTemplate(hasName("A")).bind("id"),
-    "template <typename T> void A(T t) {\n}\n\n"));
-    // Should be: without body, with semicolon
+    "template <typename T> void A(T t)"));
+    // Should be: with semicolon
 }
 
 TEST(DeclPrinter, TestFunctionTemplateDecl6) {
@@ -1041,8 +1058,8 @@ TEST(DeclPrinter, TestFunctionTemplateDecl6) {
     "  template<typename U> void A(U t) {}"
     "};",
     functionTemplate(hasName("A")).bind("id"),
-    "template <typename U> void A(U t) {\n}\n\n"));
-    // Should be: without body, with semicolon
+    "template <typename U> void A(U t)"));
+    // Should be: with semicolon
 }
 
 TEST(DeclPrinter, TestTemplateArgumentList1) {