From: Douglas Gregor Date: Sat, 30 May 2009 05:39:39 +0000 (+0000) Subject: Never suppress specifiers when printing the parameters of a function X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6620a628b0a02c78741b8f31790d4c1186aa4038;p=clang Never suppress specifiers when printing the parameters of a function declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72613 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/DeclPrinter.cpp b/lib/AST/DeclPrinter.cpp index 72f97035ef..6412f750ae 100644 --- a/lib/AST/DeclPrinter.cpp +++ b/lib/AST/DeclPrinter.cpp @@ -296,6 +296,8 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) { if (D->isVirtualAsWritten()) Out << "virtual "; } + PrintingPolicy SubPolicy(Policy); + SubPolicy.SuppressSpecifiers = false; std::string Proto = D->getNameAsString(); if (isa(D->getType().getTypePtr())) { const FunctionType *AFT = D->getType()->getAsFunctionType(); @@ -307,7 +309,7 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) { Proto += "("; if (FT) { llvm::raw_string_ostream POut(Proto); - DeclPrinter ParamPrinter(POut, Context, Policy, Indentation); + DeclPrinter ParamPrinter(POut, Context, SubPolicy, Indentation); for (unsigned i = 0, e = D->getNumParams(); i != e; ++i) { if (i) POut << ", "; ParamPrinter.VisitParmVarDecl(D->getParamDecl(i)); @@ -342,17 +344,18 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) { // This is a K&R function definition, so we need to print the // parameters. Out << '\n'; + DeclPrinter ParamPrinter(Out, Context, SubPolicy, Indentation); Indentation += Policy.Indentation; for (unsigned i = 0, e = D->getNumParams(); i != e; ++i) { Indent(); - VisitParmVarDecl(D->getParamDecl(i)); + ParamPrinter.VisitParmVarDecl(D->getParamDecl(i)); Out << ";\n"; } Indentation -= Policy.Indentation; } else Out << ' '; - D->getBody(Context)->printPretty(Out, Context, 0, Policy, Indentation); + D->getBody(Context)->printPretty(Out, Context, 0, SubPolicy, Indentation); Out << '\n'; } } diff --git a/test/Coverage/c-language-features.inc b/test/Coverage/c-language-features.inc index 27fae62d3e..5258040cc1 100644 --- a/test/Coverage/c-language-features.inc +++ b/test/Coverage/c-language-features.inc @@ -138,6 +138,8 @@ void f4(int a0, int a1, int a2, va_list ap) { _Complex float t32_a, t32_b; int t32_cond; int t32 = __real (t32_cond ? t32_a : t32_b); + + struct { int x, y; } t33, *t34, t35[12], t36(int, float); } // Extended vectors