<div dir="ltr">Is it possible to make that test to use FileCheck?<div><br></div><div>Getting a diff to be perfect across all architectures is not an easy feat...</div><div><br></div><div>--renato</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On 2 August 2013 17:25, Fariborz Jahanian <span dir="ltr"><<a href="mailto:fjahanian@apple.com" target="_blank">fjahanian@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: fjahanian<br>
Date: Fri Aug  2 11:25:41 2013<br>
New Revision: 187657<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=187657&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=187657&view=rev</a><br>
Log:<br>
revert patch I added in r187655. It still breaks public<br>
buildbot.<br>
<br>
Removed:<br>
    cfe/trunk/test/ARCMT/objcmt-instancetype-2.m<br>
    cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result<br>
Modified:<br>
    cfe/trunk/include/clang/Basic/IdentifierTable.h<br>
    cfe/trunk/lib/ARCMigrate/ObjCMT.cpp<br>
    cfe/trunk/lib/Basic/IdentifierTable.cpp<br>
    cfe/trunk/test/ARCMT/objcmt-instancetype.m.result<br>
<br>
Modified: cfe/trunk/include/clang/Basic/IdentifierTable.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/IdentifierTable.h?rev=187657&r1=187656&r2=187657&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/IdentifierTable.h?rev=187657&r1=187656&r2=187657&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/include/clang/Basic/IdentifierTable.h (original)<br>
+++ cfe/trunk/include/clang/Basic/IdentifierTable.h Fri Aug  2 11:25:41 2013<br>
@@ -586,7 +586,10 @@ enum ObjCInstanceTypeFamily {<br>
   OIT_None,<br>
   OIT_Array,<br>
   OIT_Dictionary,<br>
-  OIT_MemManage<br>
+  OIT_MemManage,<br>
+  OIT_NSString,<br>
+  OIT_NSSet,<br>
+  OIT_NSURL<br>
 };<br>
<br>
 /// \brief Smart pointer class that efficiently represents Objective-C method<br>
<br>
Modified: cfe/trunk/lib/ARCMigrate/ObjCMT.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ObjCMT.cpp?rev=187657&r1=187656&r2=187657&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ObjCMT.cpp?rev=187657&r1=187656&r2=187657&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/ARCMigrate/ObjCMT.cpp (original)<br>
+++ cfe/trunk/lib/ARCMigrate/ObjCMT.cpp Fri Aug  2 11:25:41 2013<br>
@@ -41,8 +41,6 @@ class ObjCMigrateASTConsumer : public AS<br>
   void migrateInstanceType(ASTContext &Ctx, ObjCContainerDecl *CDecl);<br>
   void migrateMethodInstanceType(ASTContext &Ctx, ObjCContainerDecl *CDecl,<br>
                                  ObjCMethodDecl *OM);<br>
-  void migrateFactoryMethod(ASTContext &Ctx, ObjCContainerDecl *CDecl,<br>
-                            ObjCMethodDecl *OM);<br>
<br>
 public:<br>
   std::string MigrateDir;<br>
@@ -551,34 +549,13 @@ void ObjCMigrateASTConsumer::migrateNSEn<br>
   Editor->commit(commit);<br>
 }<br>
<br>
-static void ReplaceWithInstancetype(const ObjCMigrateASTConsumer &ASTC,<br>
-                                    ObjCMethodDecl *OM) {<br>
-  SourceRange R;<br>
-  std::string ClassString;<br>
-  if (TypeSourceInfo *TSInfo =  OM->getResultTypeSourceInfo()) {<br>
-    TypeLoc TL = TSInfo->getTypeLoc();<br>
-    R = SourceRange(TL.getBeginLoc(), TL.getEndLoc());<br>
-    ClassString = "instancetype";<br>
-  }<br>
-  else {<br>
-    R = SourceRange(OM->getLocStart(), OM->getLocStart());<br>
-    ClassString = OM->isInstanceMethod() ? '-' : '+';<br>
-    ClassString += " (instancetype)";<br>
-  }<br>
-  edit::Commit commit(*ASTC.Editor);<br>
-  commit.replace(R, ClassString);<br>
-  ASTC.Editor->commit(commit);<br>
-}<br>
-<br>
 void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx,<br>
                                                        ObjCContainerDecl *CDecl,<br>
                                                        ObjCMethodDecl *OM) {<br>
   ObjCInstanceTypeFamily OIT_Family =<br>
     Selector::getInstTypeMethodFamily(OM->getSelector());<br>
-  if (OIT_Family == OIT_None) {<br>
-    migrateFactoryMethod(Ctx, CDecl, OM);<br>
+  if (OIT_Family == OIT_None)<br>
     return;<br>
-  }<br>
   std::string ClassName;<br>
   switch (OIT_Family) {<br>
     case OIT_Array:<br>
@@ -604,11 +581,24 @@ void ObjCMigrateASTConsumer::migrateMeth<br>
       IDecl = ImpDecl->getClassInterface();<br>
   }<br>
   if (!IDecl ||<br>
-      !IDecl->lookupInheritedClass(&Ctx.Idents.get(ClassName))) {<br>
-    migrateFactoryMethod(Ctx, CDecl, OM);<br>
+      !IDecl->lookupInheritedClass(&Ctx.Idents.get(ClassName)))<br>
     return;<br>
+<br>
+  SourceRange R;<br>
+  std::string ClassString;<br>
+  if (TypeSourceInfo *TSInfo =  OM->getResultTypeSourceInfo()) {<br>
+    TypeLoc TL = TSInfo->getTypeLoc();<br>
+    R = SourceRange(TL.getBeginLoc(), TL.getEndLoc());<br>
+    ClassString = "instancetype";<br>
   }<br>
-  ReplaceWithInstancetype(*this, OM);<br>
+  else {<br>
+    R = SourceRange(OM->getLocStart(), OM->getLocStart());<br>
+    ClassString = OM->isInstanceMethod() ? '-' : '+';<br>
+    ClassString += " (instancetype)";<br>
+  }<br>
+  edit::Commit commit(*Editor);<br>
+  commit.replace(R, ClassString);<br>
+  Editor->commit(commit);<br>
 }<br>
<br>
 void ObjCMigrateASTConsumer::migrateInstanceType(ASTContext &Ctx,<br>
@@ -622,43 +612,6 @@ void ObjCMigrateASTConsumer::migrateInst<br>
   }<br>
 }<br>
<br>
-void ObjCMigrateASTConsumer::migrateFactoryMethod(ASTContext &Ctx,<br>
-                                                  ObjCContainerDecl *CDecl,<br>
-                                                  ObjCMethodDecl *OM) {<br>
-  if (OM->isInstanceMethod() || !OM->getResultType()->isObjCIdType())<br>
-    return;<br>
-<br>
-  // Candidate factory methods are + (id) NaMeXXX : ... which belong to a class<br>
-  // NSYYYNamE with matching names be at least 3 characters long.<br>
-  ObjCInterfaceDecl *IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl);<br>
-  if (!IDecl) {<br>
-    if (ObjCCategoryDecl *CatDecl = dyn_cast<ObjCCategoryDecl>(CDecl))<br>
-      IDecl = CatDecl->getClassInterface();<br>
-    else if (ObjCImplDecl *ImpDecl = dyn_cast<ObjCImplDecl>(CDecl))<br>
-      IDecl = ImpDecl->getClassInterface();<br>
-  }<br>
-  if (!IDecl)<br>
-    return;<br>
-<br>
-  std::string StringClassName = IDecl->getName();<br>
-  StringRef LoweredClassName(StringClassName);<br>
-  LoweredClassName = LoweredClassName.lower();<br>
-  IdentifierInfo *MethodIdName = OM->getSelector().getIdentifierInfoForSlot(0);<br>
-  std::string MethodName = MethodIdName->getName();<br>
-  std::string MethodNameSubStr = MethodName.substr(0, 3);<br>
-  StringRef MethodNamePrefix(MethodNameSubStr);<br>
-  MethodNamePrefix = MethodNamePrefix.lower();<br>
-  size_t Ix = LoweredClassName.rfind(MethodNamePrefix);<br>
-  if (Ix == StringRef::npos)<br>
-    return;<br>
-  std::string ClassNamePostfix = LoweredClassName.substr(Ix);<br>
-  StringRef LoweredMethodName(MethodName);<br>
-  LoweredMethodName = LoweredMethodName.lower();<br>
-  if (!LoweredMethodName.startswith(ClassNamePostfix))<br>
-    return;<br>
-  ReplaceWithInstancetype(*this, OM);<br>
-}<br>
-<br>
 namespace {<br>
<br>
 class RewritesReceiver : public edit::EditsReceiver {<br>
<br>
Modified: cfe/trunk/lib/Basic/IdentifierTable.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/IdentifierTable.cpp?rev=187657&r1=187656&r2=187657&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/IdentifierTable.cpp?rev=187657&r1=187656&r2=187657&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Basic/IdentifierTable.cpp (original)<br>
+++ cfe/trunk/lib/Basic/IdentifierTable.cpp Fri Aug  2 11:25:41 2013<br>
@@ -474,6 +474,14 @@ ObjCInstanceTypeFamily Selector::getInst<br>
     case 'r':<br>
       if (startsWithWord(name, "retain")) return OIT_MemManage;<br>
       break;<br>
+    case 's':<br>
+      if (startsWithWord(name, "string")) return OIT_NSString;<br>
+      else<br>
+        if (startsWithWord(name, "set")) return OIT_NSSet;<br>
+      break;<br>
+    case 'U':<br>
+      if (startsWithWord(name, "URL")) return OIT_NSURL;<br>
+      break;<br>
     default:<br>
       break;<br>
   }<br>
<br>
Removed: cfe/trunk/test/ARCMT/objcmt-instancetype-2.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype-2.m?rev=187656&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype-2.m?rev=187656&view=auto</a><br>

==============================================================================<br>
--- cfe/trunk/test/ARCMT/objcmt-instancetype-2.m (original)<br>
+++ cfe/trunk/test/ARCMT/objcmt-instancetype-2.m (removed)<br>
@@ -1,76 +0,0 @@<br>
-// RUN: rm -rf %t<br>
-// RUN: %clang_cc1 -objcmt-migrate-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -fobjc-default-synthesize-properties -triple x86_64-apple-darwin11<br>
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result<br>
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc -fobjc-default-synthesize-properties %s.result<br>
-<br>
-typedef unsigned int NSUInteger;<br>
-typedef int NSInteger;<br>
-typedef char BOOL;<br>
-@class NSData, NSError, NSProtocolChecker, NSObject;<br>
-@class NSPortNameServer, NSTimeZone;<br>
-<br>
-@interface NSMutableString<br>
-@end<br>
-<br>
-@interface NSString @end<br>
-<br>
-@class NSString, NSURL;<br>
-@interface NSString (NSStringDeprecated)<br>
-+ (id)stringWithContentsOfFile:(NSString *)path __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-+ (id)stringWithContentsOfURL:(NSURL *)url __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-+ (id)stringWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-+ (id)stringWithCString:(const char *)bytes __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-@end<br>
-<br>
-<br>
-typedef enum NSURLBookmarkResolutionOptions {<br>
-                Bookmark<br>
-} NSURLBookmarkResolutionOptions;<br>
-<br>
-@interface NSURL<br>
-+ (id)URLWithString:(NSString *)URLString;<br>
-+ (id)URLWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL;<br>
-+ (id)URLByResolvingBookmarkData:(NSData *)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(NSURL *)relativeURL bookmarkDataIsStale:(BOOL *)isStale error:(NSError **)error __attribute__((availability(macosx,introduced=10.6)));<br>

-@end<br>
-<br>
-@class NSDictionary;<br>
-@interface NSError<br>
-+ (id)errorWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;<br>
-@end<br>
-<br>
-<br>
-@interface NSMutableString (NSMutableStringExtensionMethods)<br>
-+ (id)stringWithCapacity:(NSUInteger)capacity;<br>
-@end<br>
-<br>
-@interface NSMutableData<br>
-+ (id)dataWithCapacity:(NSUInteger)aNumItems;<br>
-+ (id)dataWithLength:(NSUInteger)length;<br>
-@end<br>
-<br>
-@interface NSMutableDictionary @end<br>
-<br>
-@interface NSMutableDictionary (NSSharedKeySetDictionary)<br>
-+ (id )dictionaryWithSharedKeySet:(id)keyset __attribute__((availability(macosx,introduced=10.8)));<br>
-@end<br>
-<br>
-@interface NSProtocolChecker<br>
-+ (id)protocolCheckerWithTarget:(NSObject *)anObject protocol:(Protocol *)aProtocol;<br>
-@end<br>
-<br>
-@interface NSConnection<br>
-+ (id)connectionWithRegisteredName:(NSString *)name host:(NSString *)hostName;<br>
-+ (id)connectionWithRegisteredName:(NSString *)name host:(NSString *)hostName usingNameServer:(NSPortNameServer *)server;<br>
-@end<br>
-<br>
-@interface NSDate<br>
-+ (id)dateWithString:(NSString *)aString __attribute__((availability(macosx,introduced=10.4)));<br>
-@end<br>
-<br>
-@interface NSCalendarDate : NSDate<br>
-+ (id)calendarDate __attribute__((availability(macosx,introduced=10.4)));<br>
-+ (id)dateWithString:(NSString *)description calendarFormat:(NSString *)format locale:(id)locale __attribute__((availability(macosx,introduced=10.4)));<br>
-+ (id)dateWithString:(NSString *)description calendarFormat:(NSString *)format __attribute__((availability(macosx,introduced=10.4)));<br>
-+ (id)dateWithYear:(NSInteger)year month:(NSUInteger)month day:(NSUInteger)day hour:(NSUInteger)hour minute:(NSUInteger)minute second:(NSUInteger)second timeZone:(NSTimeZone *)aTimeZone __attribute__((availability(macosx,introduced=10.4)));<br>

-@end<br>
-<br>
<br>
Removed: cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result?rev=187656&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result?rev=187656&view=auto</a><br>

==============================================================================<br>
--- cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result (original)<br>
+++ cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result (removed)<br>
@@ -1,76 +0,0 @@<br>
-// RUN: rm -rf %t<br>
-// RUN: %clang_cc1 -objcmt-migrate-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -fobjc-default-synthesize-properties -triple x86_64-apple-darwin11<br>
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result<br>
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc -fobjc-default-synthesize-properties %s.result<br>
-<br>
-typedef unsigned int NSUInteger;<br>
-typedef int NSInteger;<br>
-typedef char BOOL;<br>
-@class NSData, NSError, NSProtocolChecker, NSObject;<br>
-@class NSPortNameServer, NSTimeZone;<br>
-<br>
-@interface NSMutableString<br>
-@end<br>
-<br>
-@interface NSString @end<br>
-<br>
-@class NSString, NSURL;<br>
-@interface NSString (NSStringDeprecated)<br>
-+ (instancetype)stringWithContentsOfFile:(NSString *)path __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-+ (instancetype)stringWithContentsOfURL:(NSURL *)url __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-+ (instancetype)stringWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-+ (instancetype)stringWithCString:(const char *)bytes __attribute__((availability(macosx,introduced=10.0 ,deprecated=10.4,message="" )));<br>
-@end<br>
-<br>
-<br>
-typedef enum NSURLBookmarkResolutionOptions {<br>
-                Bookmark<br>
-} NSURLBookmarkResolutionOptions;<br>
-<br>
-@interface NSURL<br>
-+ (instancetype)URLWithString:(NSString *)URLString;<br>
-+ (instancetype)URLWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL;<br>
-+ (instancetype)URLByResolvingBookmarkData:(NSData *)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(NSURL *)relativeURL bookmarkDataIsStale:(BOOL *)isStale error:(NSError **)error __attribute__((availability(macosx,introduced=10.6)));<br>

-@end<br>
-<br>
-@class NSDictionary;<br>
-@interface NSError<br>
-+ (instancetype)errorWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;<br>
-@end<br>
-<br>
-<br>
-@interface NSMutableString (NSMutableStringExtensionMethods)<br>
-+ (instancetype)stringWithCapacity:(NSUInteger)capacity;<br>
-@end<br>
-<br>
-@interface NSMutableData<br>
-+ (instancetype)dataWithCapacity:(NSUInteger)aNumItems;<br>
-+ (instancetype)dataWithLength:(NSUInteger)length;<br>
-@end<br>
-<br>
-@interface NSMutableDictionary @end<br>
-<br>
-@interface NSMutableDictionary (NSSharedKeySetDictionary)<br>
-+ (instancetype )dictionaryWithSharedKeySet:(id)keyset __attribute__((availability(macosx,introduced=10.8)));<br>
-@end<br>
-<br>
-@interface NSProtocolChecker<br>
-+ (instancetype)protocolCheckerWithTarget:(NSObject *)anObject protocol:(Protocol *)aProtocol;<br>
-@end<br>
-<br>
-@interface NSConnection<br>
-+ (instancetype)connectionWithRegisteredName:(NSString *)name host:(NSString *)hostName;<br>
-+ (instancetype)connectionWithRegisteredName:(NSString *)name host:(NSString *)hostName usingNameServer:(NSPortNameServer *)server;<br>
-@end<br>
-<br>
-@interface NSDate<br>
-+ (instancetype)dateWithString:(NSString *)aString __attribute__((availability(macosx,introduced=10.4)));<br>
-@end<br>
-<br>
-@interface NSCalendarDate : NSDate<br>
-+ (instancetype)calendarDate __attribute__((availability(macosx,introduced=10.4)));<br>
-+ (instancetype)dateWithString:(NSString *)description calendarFormat:(NSString *)format locale:(id)locale __attribute__((availability(macosx,introduced=10.4)));<br>
-+ (instancetype)dateWithString:(NSString *)description calendarFormat:(NSString *)format __attribute__((availability(macosx,introduced=10.4)));<br>
-+ (instancetype)dateWithYear:(NSInteger)year month:(NSUInteger)month day:(NSUInteger)day hour:(NSUInteger)hour minute:(NSUInteger)minute second:(NSUInteger)second timeZone:(NSTimeZone *)aTimeZone __attribute__((availability(macosx,introduced=10.4)));<br>

-@end<br>
-<br>
<br>
Modified: cfe/trunk/test/ARCMT/objcmt-instancetype.m.result<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype.m.result?rev=187657&r1=187656&r2=187657&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype.m.result?rev=187657&r1=187656&r2=187657&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/ARCMT/objcmt-instancetype.m.result (original)<br>
+++ cfe/trunk/test/ARCMT/objcmt-instancetype.m.result Fri Aug  2 11:25:41 2013<br>
@@ -11,7 +11,7 @@ typedef signed char BOOL;<br>
 @end<br>
<br>
 @interface NSString : NSObject<br>
-+ (instancetype)stringWithString:(NSString *)string;<br>
++ (id)stringWithString:(NSString *)string;<br>
 - (instancetype)initWithString:(NSString *)aString;<br>
 @end<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>