From: Fariborz Jahanian Date: Fri, 19 Jul 2013 17:44:32 +0000 (+0000) Subject: Fixes an ObjC migrator crash when last decl X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=72685630b693c0ba6050875128ff6bb18107ba2f;p=clang Fixes an ObjC migrator crash when last decl in file is an enum. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186700 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index 2f4a3e7401..282006b576 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/lib/ARCMigrate/ObjCMT.cpp @@ -399,7 +399,7 @@ static bool rewriteToNSEnumDecl(const EnumDecl *EnumDcl, return false; } -void ObjCMigrateASTConsumer::migrateProtocolConformance(ASTContext &Ctx, +void ObjCMigrateASTConsumer::migrateProtocolConformance(ASTContext &Ctx, const ObjCImplementationDecl *ImpDecl) { const ObjCInterfaceDecl *IDecl = ImpDecl->getClassInterface(); if (!IDecl || ObjCProtocolDecls.empty()) @@ -514,8 +514,9 @@ void ObjCMigrateASTConsumer::HandleTranslationUnit(ASTContext &Ctx) { else if (const EnumDecl *ED = dyn_cast(*D)) { DeclContext::decl_iterator N = D; ++N; - if (const TypedefDecl *TD = dyn_cast(*N)) - migrateNSEnumDecl(Ctx, ED, TD); + if (N != DEnd) + if (const TypedefDecl *TD = dyn_cast(*N)) + migrateNSEnumDecl(Ctx, ED, TD); } } diff --git a/test/ARCMT/objcmt-ns-macros.m b/test/ARCMT/objcmt-ns-macros.m index e56c4cf2dd..b9069f5792 100644 --- a/test/ARCMT/objcmt-ns-macros.m +++ b/test/ARCMT/objcmt-ns-macros.m @@ -27,3 +27,8 @@ enum { typedef NSUInteger UITableViewCellStyle; +enum { + UNOne, + UNTwo +}; + diff --git a/test/ARCMT/objcmt-ns-macros.m.result b/test/ARCMT/objcmt-ns-macros.m.result index 8a09bff3b8..fcfe077039 100644 --- a/test/ARCMT/objcmt-ns-macros.m.result +++ b/test/ARCMT/objcmt-ns-macros.m.result @@ -27,3 +27,8 @@ typedef NS_OPTIONS(NSUInteger, UITableViewCellStyle) { +enum { + UNOne, + UNTwo +}; +