aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2019-01-18 21:38:30 +0000
committerStephen Kelly <steveire@gmail.com>2019-01-18 21:38:30 +0000
commit149119dc5f71b19500456307b2f50cea3fce42f9 (patch)
treeafc9c44d0d374a1018a4bf4bc9dd0592bb16bfcd /clang/lib
parent4599159ac3a1634accf457c15c2d0e1dc8063ee2 (diff)
downloadllvm-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.cpp14
-rw-r--r--clang/lib/AST/TextNodeDumper.cpp2
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;