summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-08-22 06:59:15 +0000
committerChris Lattner <sabre@nondot.org>2008-08-22 06:59:15 +0000
commit433a2ce9885009aaf9052a0231eeb8dd0da22d36 (patch)
treea06a036940185aef9b1a918d3594090125e4c1c4
parent834c57db345d744dff96d1e436b98c13f9c56f10 (diff)
downloadbcm5719-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.cpp19
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) {
OpenPOWER on IntegriCloud