From: Fariborz Jahanian Date: Tue, 23 Jul 2013 23:55:55 +0000 (+0000) Subject: ObjectiveC migration: more migration to X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=211b4a2b2260ba5a3150f2b8d47f569e9773b1d3;p=clang ObjectiveC migration: more migration to instancetype of NSDictionary methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187008 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index 9048e5491e..5d53830022 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/lib/ARCMigrate/ObjCMT.cpp @@ -557,8 +557,14 @@ void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx, if (OIT_Family == OIT_None) return; // TODO. Many more to come - if (OIT_Family != OIT_Array) - return; + switch (OIT_Family) { + case OIT_Array: + break; + case OIT_Dictionary: + break; + default: + return; + } if (!OM->getResultType()->isObjCIdType()) return; @@ -569,7 +575,14 @@ void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx, else if (ObjCImplDecl *ImpDecl = dyn_cast(CDecl)) IDecl = ImpDecl->getClassInterface(); } - if (!IDecl || !IDecl->lookupInheritedClass(&Ctx.Idents.get("NSArray"))) + if (!IDecl) + return; + + if (OIT_Family == OIT_Array && + !IDecl->lookupInheritedClass(&Ctx.Idents.get("NSArray"))) + return; + else if (OIT_Family == OIT_Dictionary && + !IDecl->lookupInheritedClass(&Ctx.Idents.get("NSDictionary"))) return; TypeSourceInfo *TSInfo = OM->getResultTypeSourceInfo(); diff --git a/test/ARCMT/objcmt-instancetype.m.result b/test/ARCMT/objcmt-instancetype.m.result index 00b875f777..3b3ee8bcc6 100644 --- a/test/ARCMT/objcmt-instancetype.m.result +++ b/test/ARCMT/objcmt-instancetype.m.result @@ -44,12 +44,12 @@ typedef signed char BOOL; @end @interface NSDictionary (NSDictionaryCreation) -+ (id)dictionary; -+ (id)dictionaryWithObject:(id)object forKey:(id)key; -+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; -+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...; -+ (id)dictionaryWithDictionary:(NSDictionary *)dict; -+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys; ++ (instancetype)dictionary; ++ (instancetype)dictionaryWithObject:(id)object forKey:(id)key; ++ (instancetype)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; ++ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...; ++ (instancetype)dictionaryWithDictionary:(NSDictionary *)dict; ++ (instancetype)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys; - (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; - (id)initWithObjectsAndKeys:(id)firstObject, ...;