diff options
author | Stephen Kelly <steveire@gmail.com> | 2019-01-18 21:38:30 +0000 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2019-01-18 21:38:30 +0000 |
commit | 149119dc5f71b19500456307b2f50cea3fce42f9 (patch) | |
tree | afc9c44d0d374a1018a4bf4bc9dd0592bb16bfcd /clang/lib | |
parent | 4599159ac3a1634accf457c15c2d0e1dc8063ee2 (diff) | |
download | llvm-149119dc5f71b19500456307b2f50cea3fce42f9.zip llvm-149119dc5f71b19500456307b2f50cea3fce42f9.tar.gz llvm-149119dc5f71b19500456307b2f50cea3fce42f9.tar.bz2 |
[ASTDump] Mark variadic declarations with a tag instead of child node
Summary:
This makes it easier to separate traversal of the AST from output
generation.
Reviewers: aaron.ballman
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D56751
llvm-svn: 351597
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/ASTDumper.cpp | 14 | ||||
-rw-r--r-- | clang/lib/AST/TextNodeDumper.cpp | 2 |
2 files changed, 8 insertions, 8 deletions
diff --git a/clang/lib/AST/ASTDumper.cpp b/clang/lib/AST/ASTDumper.cpp index b52ec21..b99ed3b 100644 --- a/clang/lib/AST/ASTDumper.cpp +++ b/clang/lib/AST/ASTDumper.cpp @@ -164,8 +164,6 @@ namespace { VisitFunctionType(T); for (QualType PT : T->getParamTypes()) dumpTypeAsChild(PT); - if (T->getExtProtoInfo().Variadic) - dumpChild([=] { OS << "..."; }); } void VisitTypeOfExprType(const TypeOfExprType *T) { dumpStmt(T->getUnderlyingExpr()); @@ -1236,6 +1234,9 @@ void ASTDumper::VisitObjCMethodDecl(const ObjCMethodDecl *D) { NodeDumper.dumpName(D); NodeDumper.dumpType(D->getReturnType()); + if (D->isVariadic()) + OS << " variadic"; + if (D->isThisDeclarationADefinition()) { dumpDeclContext(D); } else { @@ -1243,9 +1244,6 @@ void ASTDumper::VisitObjCMethodDecl(const ObjCMethodDecl *D) { dumpDecl(Parameter); } - if (D->isVariadic()) - dumpChild([=] { OS << "..."; }); - if (D->hasBody()) dumpStmt(D->getBody()); } @@ -1378,12 +1376,12 @@ void ASTDumper::Visit(const BlockDecl::Capture &C) { } void ASTDumper::VisitBlockDecl(const BlockDecl *D) { + if (D->isVariadic()) + OS << " variadic"; + for (auto I : D->parameters()) dumpDecl(I); - if (D->isVariadic()) - dumpChild([=]{ OS << "..."; }); - if (D->capturesCXXThis()) dumpChild([=]{ OS << "capture this"; }); diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index b51a900..a514f85 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -1096,6 +1096,8 @@ void TextNodeDumper::VisitFunctionProtoType(const FunctionProtoType *T) { OS << " volatile"; if (T->isRestrict()) OS << " restrict"; + if (T->getExtProtoInfo().Variadic) + OS << " variadic"; switch (EPI.RefQualifier) { case RQ_None: break; |