[cfe-commits] r75487 - /cfe/trunk/lib/AST/DeclPrinter.cpp
Fariborz Jahanian
fjahanian at apple.com
Mon Jul 13 13:18:14 PDT 2009
Author: fjahanian
Date: Mon Jul 13 15:18:13 2009
New Revision: 75487
URL: http://llvm.org/viewvc/llvm-project?rev=75487&view=rev
Log:
Added pretty-printing support for constructor definition.
Modified:
cfe/trunk/lib/AST/DeclPrinter.cpp
Modified: cfe/trunk/lib/AST/DeclPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=75487&r1=75486&r2=75487&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclPrinter.cpp (original)
+++ cfe/trunk/lib/AST/DeclPrinter.cpp Mon Jul 13 15:18:13 2009
@@ -335,7 +335,47 @@
}
Proto += ")";
- AFT->getResultType().getAsStringInternal(Proto, Policy);
+ if (CXXConstructorDecl *CDecl = dyn_cast<CXXConstructorDecl>(D)) {
+ if (CDecl->getNumBaseOrMemberInitializers() > 0) {
+ Proto += " : ";
+ Out << Proto;
+ Proto.clear();
+ for (CXXConstructorDecl::init_const_iterator B = CDecl->init_begin(),
+ E = CDecl->init_end();
+ B != E; ++B) {
+ CXXBaseOrMemberInitializer * BMInitializer = (*B);
+ if (B != CDecl->init_begin())
+ Out << ", ";
+ bool hasArguments = (BMInitializer->begin() != BMInitializer->end());
+ if (BMInitializer->isMemberInitializer()) {
+ FieldDecl *FD = BMInitializer->getMember();
+ Out << FD->getNameAsString();
+ }
+ else {
+ const RecordType *RT =
+ BMInitializer->getBaseClass()->getAsRecordType();
+ const CXXRecordDecl *BaseDecl = cast<CXXRecordDecl>(RT->getDecl());
+ Out << BaseDecl->getNameAsString();
+ if (!hasArguments)
+ Out << "()";
+ }
+ if (hasArguments) {
+ Out << "(";
+ for (CXXBaseOrMemberInitializer::arg_const_iterator BE =
+ BMInitializer->begin(), EE = BMInitializer->end();
+ BE != EE; BE++) {
+ if (BE != BMInitializer->begin())
+ Out<< ", ";
+ Expr *Exp = (*BE);
+ Exp->printPretty(Out, Context, 0, Policy, Indentation);
+ }
+ Out << ")";
+ }
+ }
+ }
+ }
+ else
+ AFT->getResultType().getAsStringInternal(Proto, Policy);
} else {
D->getType().getAsStringInternal(Proto, Policy);
}
More information about the cfe-commits
mailing list