<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Checked in an ‘improved’ version in r<span style="font-family: Menlo; font-size: 11px;">187655. Feel free to revert if it breaks public</span><div><font face="Menlo"><span style="font-size: 11px;">buildbot again.</span></font></div><div><font face="Menlo"><span style="font-size: 11px;"><br></span></font></div><div><font face="Menlo"><span style="font-size: 11px;">- Fariborz</span></font></div><div><font face="Menlo"><span style="font-size: 11px;"><br></span></font><div><div><div>On Aug 1, 2013, at 5:01 PM, Rafael Espindola <<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Author: rafael<br>Date: Thu Aug  1 19:01:14 2013<br>New Revision: 187634<br><br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=187634&view=rev">http://llvm.org/viewvc/llvm-project?rev=187634&view=rev</a><br>Log:<br>Revert "ObjectiveC migrator. Migrate to instancetype return type for mehods with certain prefix selector matching their class names' suffix."<br><br>This reverts commit r187626.<br><br>It is breaking the bots.<br><br>Removed:<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:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/IdentifierTable.h?rev=187634&r1=187633&r2=187634&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/IdentifierTable.h?rev=187634&r1=187633&r2=187634&view=diff</a><br>==============================================================================<br>--- cfe/trunk/include/clang/Basic/IdentifierTable.h (original)<br>+++ cfe/trunk/include/clang/Basic/IdentifierTable.h Thu Aug  1 19:01:14 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:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ObjCMT.cpp?rev=187634&r1=187633&r2=187634&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ObjCMT.cpp?rev=187634&r1=187633&r2=187634&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/ARCMigrate/ObjCMT.cpp (original)<br>+++ cfe/trunk/lib/ARCMigrate/ObjCMT.cpp Thu Aug  1 19:01:14 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>+  else {<br>+    R = SourceRange(OM->getLocStart(), OM->getLocStart());<br>+    ClassString = OM->isInstanceMethod() ? '-' : '+';<br>+    ClassString += " (instancetype)";<br>  }<br>-  ReplaceWithInstancetype(*this, OM);<br>+  edit::Commit commit(*Editor);<br>+  commit.replace(R, ClassString);<br>+  Editor->commit(commit);<br>}<br><br>void ObjCMigrateASTConsumer::migrateInstanceType(ASTContext &Ctx,<br>@@ -622,42 +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>-  StringRef ClassName = IDecl->getName();<br>-  if (!ClassName.startswith("NS"))<br>-    return;<br>-  <br>-  ClassName = ClassName.lower();<br>-  IdentifierInfo *MethodIdName = OM->getSelector().getIdentifierInfoForSlot(0);<br>-  StringRef MethodName = MethodIdName->getName();<br>-  StringRef MethodNamePrefix = MethodName.substr(0, 3).lower();<br>-  size_t Ix = ClassName.rfind(MethodNamePrefix);<br>-  if (Ix == StringRef::npos)<br>-    return;<br>-  StringRef ClassNamePostfix = ClassName.substr(Ix);<br>-  MethodName = MethodName.lower();<br>-  if (!MethodName.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:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/IdentifierTable.cpp?rev=187634&r1=187633&r2=187634&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/IdentifierTable.cpp?rev=187634&r1=187633&r2=187634&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/Basic/IdentifierTable.cpp (original)<br>+++ cfe/trunk/lib/Basic/IdentifierTable.cpp Thu Aug  1 19:01:14 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.result<br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result?rev=187633&view=auto">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype-2.m.result?rev=187633&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:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype.m.result?rev=187634&r1=187633&r2=187634&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-instancetype.m.result?rev=187634&r1=187633&r2=187634&view=diff</a><br>==============================================================================<br>--- cfe/trunk/test/ARCMT/objcmt-instancetype.m.result (original)<br>+++ cfe/trunk/test/ARCMT/objcmt-instancetype.m.result Thu Aug  1 19:01:14 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">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a></div></blockquote></div><br></div></div></body></html>