Refactor USR generation for TagDecls into a common method.
llvm-svn: 93799
This commit is contained in:
parent
eb0c52f194
commit
80de67b0cf
|
@ -78,7 +78,6 @@ public:
|
|||
|
||||
void VisitBlockDecl(BlockDecl *D);
|
||||
void VisitDeclContext(DeclContext *D);
|
||||
void VisitEnumDecl(EnumDecl *D);
|
||||
void VisitFieldDecl(FieldDecl *D);
|
||||
void VisitFunctionDecl(FunctionDecl *D);
|
||||
void VisitNamedDecl(NamedDecl *D);
|
||||
|
@ -86,8 +85,7 @@ public:
|
|||
void VisitObjCContainerDecl(ObjCContainerDecl *CD);
|
||||
void VisitObjCMethodDecl(ObjCMethodDecl *MD);
|
||||
void VisitObjCPropertyDecl(ObjCPropertyDecl *D);
|
||||
void VisitRecordDecl(RecordDecl *D);
|
||||
void VisitTagDeclCommon(TagDecl *D);
|
||||
void VisitTagDecl(TagDecl *D);
|
||||
void VisitTypedefDecl(TypedefDecl *D);
|
||||
};
|
||||
} // end anonymous namespace
|
||||
|
@ -103,12 +101,6 @@ void USRGenerator::VisitDeclContext(DeclContext *DC) {
|
|||
Visit(D);
|
||||
}
|
||||
|
||||
void USRGenerator::VisitEnumDecl(EnumDecl *D) {
|
||||
VisitDeclContext(D->getDeclContext());
|
||||
Out << "@E^";
|
||||
VisitTagDeclCommon(D);
|
||||
}
|
||||
|
||||
void USRGenerator::VisitFieldDecl(FieldDecl *D) {
|
||||
const std::string &s = D->getNameAsString();
|
||||
if (s.empty()) {
|
||||
|
@ -137,12 +129,6 @@ void USRGenerator::VisitNamespaceDecl(NamespaceDecl *D) {
|
|||
Out << "@N^" << D->getNameAsString();
|
||||
}
|
||||
|
||||
void USRGenerator::VisitRecordDecl(RecordDecl *D) {
|
||||
VisitDeclContext(D->getDeclContext());
|
||||
Out << "@S^";
|
||||
VisitTagDeclCommon(D);
|
||||
}
|
||||
|
||||
void USRGenerator::VisitObjCMethodDecl(ObjCMethodDecl *D) {
|
||||
Visit(cast<Decl>(D->getDeclContext()));
|
||||
Out << (D->isInstanceMethod() ? "(im)" : "(cm)");
|
||||
|
@ -180,7 +166,15 @@ void USRGenerator::VisitObjCPropertyDecl(ObjCPropertyDecl *D) {
|
|||
Out << "(py)" << D->getName();
|
||||
}
|
||||
|
||||
void USRGenerator::VisitTagDeclCommon(TagDecl *D) {
|
||||
void USRGenerator::VisitTagDecl(TagDecl *D) {
|
||||
VisitDeclContext(D->getDeclContext());
|
||||
switch (D->getTagKind()) {
|
||||
case TagDecl::TK_struct: Out << "@S^"; break;
|
||||
case TagDecl::TK_class: Out << "@C^"; break;
|
||||
case TagDecl::TK_union: Out << "@U^"; break;
|
||||
case TagDecl::TK_enum: Out << "@E^"; break;
|
||||
}
|
||||
|
||||
// FIXME: Better support for anonymous structures and enums.
|
||||
const std::string &s = D->getNameAsString();
|
||||
if (s.empty()) {
|
||||
|
|
Loading…
Reference in New Issue