summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-01-12 19:35:53 +0000
committerTed Kremenek <kremenek@apple.com>2010-01-12 19:35:53 +0000
commit55e3e83b07660d89f70f20d0790c45c5f49c7f72 (patch)
treece8f6caa48da55ae574feb35a54f7831c202adc4
parentf76941ed8383b41c5e4a23d7e7530a67f83a8593 (diff)
downloadbcm5719-llvm-55e3e83b07660d89f70f20d0790c45c5f49c7f72.tar.gz
bcm5719-llvm-55e3e83b07660d89f70f20d0790c45c5f49c7f72.zip
Further tweaking of USR generation. WIP.
llvm-svn: 93250
-rw-r--r--clang/tools/CIndex/CIndexUSRs.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/clang/tools/CIndex/CIndexUSRs.cpp b/clang/tools/CIndex/CIndexUSRs.cpp
index 5766b21d867..70006bcf3a0 100644
--- a/clang/tools/CIndex/CIndexUSRs.cpp
+++ b/clang/tools/CIndex/CIndexUSRs.cpp
@@ -87,15 +87,29 @@ class USRGenerator : public DeclVisitor<USRGenerator> {
public:
USRGenerator(llvm::raw_ostream &out) : Out(out) {}
+ void VisitNamedDecl(NamedDecl *D);
void VisitObjCContainerDecl(ObjCContainerDecl *CD);
void VisitObjCMethodDecl(ObjCMethodDecl *MD);
void VisitObjCPropertyDecl(ObjCPropertyDecl *D);
};
} // end anonymous namespace
+
+void USRGenerator::VisitNamedDecl(NamedDecl *D) {
+ DeclContext *DC = D->getDeclContext();
+ if (NamedDecl *DCN = dyn_cast<NamedDecl>(DC)) {
+ Visit(DCN);
+ Out << '_';
+ }
+ else {
+ Out << '_';
+ }
+ Out << D->getName();
+}
+
void USRGenerator::VisitObjCMethodDecl(ObjCMethodDecl *D) {
Visit(cast<Decl>(D->getDeclContext()));
- Out << (D->isInstanceMethod() ? "_IM_" : "_CM_");
+ Out << (D->isInstanceMethod() ? "(im)" : "(cm)");
Out << DeclarationName(D->getSelector());
}
@@ -105,29 +119,29 @@ void USRGenerator::VisitObjCContainerDecl(ObjCContainerDecl *D) {
assert(false && "Invalid ObjC container.");
case Decl::ObjCInterface:
case Decl::ObjCImplementation:
- Out << "objc_class_" << D->getName();
+ Out << "objc(cs)" << D->getName();
break;
case Decl::ObjCCategory: {
ObjCCategoryDecl *CD = cast<ObjCCategoryDecl>(D);
- Out << "objc_cat_" << CD->getClassInterface()->getName()
+ Out << "objc(cy)" << CD->getClassInterface()->getName()
<< '_' << CD->getName();
break;
}
case Decl::ObjCCategoryImpl: {
ObjCCategoryImplDecl *CD = cast<ObjCCategoryImplDecl>(D);
- Out << "objc_cat_" << CD->getClassInterface()->getName()
+ Out << "objc(cy)" << CD->getClassInterface()->getName()
<< '_' << CD->getName();
break;
}
case Decl::ObjCProtocol:
- Out << "objc_prot_" << cast<ObjCProtocolDecl>(D)->getName();
+ Out << "objc(pl)" << cast<ObjCProtocolDecl>(D)->getName();
break;
}
}
void USRGenerator::VisitObjCPropertyDecl(ObjCPropertyDecl *D) {
Visit(cast<Decl>(D->getDeclContext()));
- Out << "_prop_" << D->getName();
+ Out << "(py)" << D->getName();
}
// FIXME: This is a skeleton implementation. It will be overhauled.
OpenPOWER on IntegriCloud