diff options
| author | Chris Lattner <sabre@nondot.org> | 2008-08-22 06:59:15 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2008-08-22 06:59:15 +0000 |
| commit | 433a2ce9885009aaf9052a0231eeb8dd0da22d36 (patch) | |
| tree | a06a036940185aef9b1a918d3594090125e4c1c4 | |
| parent | 834c57db345d744dff96d1e436b98c13f9c56f10 (diff) | |
| download | bcm5719-llvm-433a2ce9885009aaf9052a0231eeb8dd0da22d36.tar.gz bcm5719-llvm-433a2ce9885009aaf9052a0231eeb8dd0da22d36.zip | |
improve pretty printing of objc method declaration,
patch contributed by Benjamin Stiglitz!
llvm-svn: 55170
| -rw-r--r-- | clang/Driver/ASTConsumers.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/clang/Driver/ASTConsumers.cpp b/clang/Driver/ASTConsumers.cpp index ea6dc3f7651..1e964f076e1 100644 --- a/clang/Driver/ASTConsumers.cpp +++ b/clang/Driver/ASTConsumers.cpp @@ -193,15 +193,26 @@ void DeclPrinter::PrintObjCMethodDecl(ObjCMethodDecl *OMD) { else Out << "\n+ "; if (!OMD->getResultType().isNull()) - Out << '(' << OMD->getResultType().getAsString() << ") "; - // FIXME: just print original selector name! - Out << OMD->getSelector().getName(); + Out << '(' << OMD->getResultType().getAsString() << ")"; + std::string name = OMD->getSelector().getName(); + std::string::size_type pos, lastPos = 0; for (unsigned i = 0, e = OMD->getNumParams(); i != e; ++i) { ParmVarDecl *PDecl = OMD->getParamDecl(i); // FIXME: selector is missing here! - Out << " :(" << PDecl->getType().getAsString() << ") " << PDecl->getName(); + pos = name.find_first_of(":", lastPos); + Out << " " << name.substr(lastPos, pos - lastPos); + Out << ":(" << PDecl->getType().getAsString() << ")" << PDecl->getName(); + lastPos = pos + 1; } + + if (OMD->getNumParams() == 0) + Out << " " << name; + + if (OMD->isVariadic()) + Out << ", ..."; + + Out << ";"; } void DeclPrinter::PrintObjCImplementationDecl(ObjCImplementationDecl *OID) { |

