]> granicus.if.org Git - clang/commitdiff
ObjectiveC migration: more migration to
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 23 Jul 2013 23:55:55 +0000 (23:55 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 23 Jul 2013 23:55:55 +0000 (23:55 +0000)
instancetype of NSDictionary methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187008 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ARCMigrate/ObjCMT.cpp
test/ARCMT/objcmt-instancetype.m.result

index 9048e5491eaeeba930ae13c591281eddfb028c45..5d5383002283f49dd094efa45d3931e1bc71cd70 100644 (file)
@@ -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<ObjCImplDecl>(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();
index 00b875f777dae4bae15ca91d0fc2d8177cae6cc4..3b3ee8bcc69de6ff64ad872e2559cde12b4222d7 100644 (file)
@@ -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, ...;