diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-04-30 19:46:53 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-04-30 19:46:53 +0000 |
commit | 89585e800122de7ee4ca74dfca1c86a11685528f (patch) | |
tree | 2f67a7af20b4fd2cbba54605c85026e3d675c1bf | |
parent | 8eece46c544e79190d5b3e7c28f68c1463fbf2f9 (diff) |
minor refactoring of modern objc translator.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155843 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Rewrite/RewriteModernObjC.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp index d463cb021c..5cd6836cc3 100644 --- a/lib/Rewrite/RewriteModernObjC.cpp +++ b/lib/Rewrite/RewriteModernObjC.cpp @@ -3494,6 +3494,22 @@ bool RewriteModernObjC::BufferContainsPPDirectives(const char *startBuf, return false; } +static bool IsTagDefinedInsideClass(ASTContext *Context, + ObjCInterfaceDecl *IDecl, TagDecl *Tag) { + if (!IDecl) + return false; + SourceLocation TagLocation; + if (RecordDecl *RD = dyn_cast<RecordDecl>(Tag)) { + RD = RD->getDefinition(); + if (!RD) + return false; + TagLocation = RD->getLocation(); + return Context->getSourceManager().isBeforeInTranslationUnit( + IDecl->getLocation(), TagLocation); + } + return false; +} + /// RewriteObjCFieldDeclType - This routine rewrites a type into the buffer. /// It handles elaborated types, as well as enum types in the process. bool RewriteModernObjC::RewriteObjCFieldDeclType(QualType &Type, @@ -7248,11 +7264,7 @@ Stmt *RewriteModernObjC::RewriteObjCIvarRefExpr(ObjCIvarRefExpr *IV) { if (IvarT->isRecordType()) { RecordDecl *RD = IvarT->getAs<RecordType>()->getDecl(); - RD = RD->getDefinition(); - bool structIsInside = RD && - Context->getSourceManager().isBeforeInTranslationUnit( - iFaceDecl->getDecl()->getLocation(), RD->getLocation()); - if (structIsInside) { + if (IsTagDefinedInsideClass(Context, iFaceDecl->getDecl(), RD)) { // decltype(((Foo_IMPL*)0)->bar) * std::string RecName = iFaceDecl->getDecl()->getName(); RecName += "_IMPL"; |