diff options
-rw-r--r-- | clang/lib/AST/DeclPrinter.cpp | 9 | ||||
-rw-r--r-- | clang/test/Coverage/c-language-features.inc | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp index 72f97035ef1..6412f750ae9 100644 --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/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<FunctionType>(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/clang/test/Coverage/c-language-features.inc b/clang/test/Coverage/c-language-features.inc index 27fae62d3e8..5258040cc11 100644 --- a/clang/test/Coverage/c-language-features.inc +++ b/clang/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 |