From: Zhongxing Xu Date: Tue, 13 Jan 2009 03:26:38 +0000 (+0000) Subject: Improve c++ methods printing in DeclContextPrinter. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a3eb0e22e671112ab19b62e9a40615d195a7f17;p=clang Improve c++ methods printing in DeclContextPrinter. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62143 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp index 5bafd0928b..2aa7c651b2 100644 --- a/Driver/ASTConsumers.cpp +++ b/Driver/ASTConsumers.cpp @@ -647,46 +647,69 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC, break; } case Decl::CXXMethod: { - CXXMethodDecl* CMD = CXXMethodDecl::castFromDeclContext(DC); - if (CMD->isOutOfLineDefinition()) + CXXMethodDecl* D = CXXMethodDecl::castFromDeclContext(DC); + if (D->isOutOfLineDefinition()) Out << "[c++ method] "; + else if (D->isImplicit()) + Out << "(c++ method) "; else Out << " "; - Out << CMD->getNameAsString(); + Out << D->getNameAsString(); // Check the semantic DeclContext. - DeclContext* SemaDC = CMD->getDeclContext(); - DeclContext* LexicalDC = CMD->getLexicalDeclContext(); - if (SemaDC != LexicalDC) { + DeclContext* SemaDC = D->getDeclContext(); + DeclContext* LexicalDC = D->getLexicalDeclContext(); + if (SemaDC != LexicalDC) Out << " [[" << SemaDC << "]]"; - } + break; } case Decl::CXXConstructor: { - CXXConstructorDecl* CMD = CXXConstructorDecl::castFromDeclContext(DC); - if (CMD->isOutOfLineDefinition()) + CXXConstructorDecl* D = CXXConstructorDecl::castFromDeclContext(DC); + if (D->isOutOfLineDefinition()) Out << "[c++ ctor] "; + else if (D->isImplicit()) + Out << "(c++ ctor) "; else Out << " "; - Out << CMD->getNameAsString(); + Out << D->getNameAsString(); + // Check the semantic DC. + DeclContext* SemaDC = D->getDeclContext(); + DeclContext* LexicalDC = D->getLexicalDeclContext(); + if (SemaDC != LexicalDC) + Out << " [[" << SemaDC << "]]"; break; } case Decl::CXXDestructor: { - CXXDestructorDecl* CMD = CXXDestructorDecl::castFromDeclContext(DC); - if (CMD->isOutOfLineDefinition()) + CXXDestructorDecl* D = CXXDestructorDecl::castFromDeclContext(DC); + if (D->isOutOfLineDefinition()) Out << "[c++ dtor] "; + else if (D->isImplicit()) + Out << "(c++ dtor) "; else Out << " "; - Out << CMD->getNameAsString(); + Out << D->getNameAsString(); + // Check the semantic DC. + DeclContext* SemaDC = D->getDeclContext(); + DeclContext* LexicalDC = D->getLexicalDeclContext(); + if (SemaDC != LexicalDC) + Out << " [[" << SemaDC << "]]"; break; } case Decl::CXXConversion: { - CXXConversionDecl* CMD = CXXConversionDecl::castFromDeclContext(DC); - if (CMD->isOutOfLineDefinition()) + CXXConversionDecl* D = CXXConversionDecl::castFromDeclContext(DC); + if (D->isOutOfLineDefinition()) Out << "[c++ conversion] "; + else if (D->isImplicit()) + Out << "(c++ conversion) "; else Out << " "; - Out << CMD->getNameAsString(); + Out << D->getNameAsString(); + // Check the semantic DC. + DeclContext* SemaDC = D->getDeclContext(); + DeclContext* LexicalDC = D->getLexicalDeclContext(); + if (SemaDC != LexicalDC) + Out << " [[" << SemaDC << "]]"; break; }