From: Fariborz Jahanian Date: Wed, 11 Sep 2013 18:27:16 +0000 (+0000) Subject: ObjectiveC migrator. Modify inferred property name X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e80501ba640fae189d5f944b025a0079ec3c579f;p=clang ObjectiveC migrator. Modify inferred property name such that it does not lower case the staring property name if getter name (after "get" prefix) starts with two upper case letters. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190539 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index f550e7cad0..79336bb906 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/lib/ARCMigrate/ObjCMT.cpp @@ -312,7 +312,11 @@ static bool rewriteToObjCProperty(const ObjCMethodDecl *Getter, PropertyNameStringRef = PropertyNameStringRef.drop_front(LengthOfPrefix); PropertyNameString = PropertyNameStringRef; std::string NewPropertyNameString = PropertyNameString; - NewPropertyNameString[0] = toLowercase(NewPropertyNameString[0]); + bool NoLowering = (isUppercase(NewPropertyNameString[0]) && + NewPropertyNameString.size() > 1 && + isUppercase(NewPropertyNameString[1])); + if (!NoLowering) + NewPropertyNameString[0] = toLowercase(NewPropertyNameString[0]); PropertyString += NewPropertyNameString; } else diff --git a/test/ARCMT/objcmt-property.m b/test/ARCMT/objcmt-property.m index 924679841f..60346d7631 100644 --- a/test/ARCMT/objcmt-property.m +++ b/test/ARCMT/objcmt-property.m @@ -106,6 +106,12 @@ typedef char BOOL; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out + +- (BOOL) getM; +- (BOOL) getMA; +- (BOOL) getALL; +- (BOOL) getMANY; +- (BOOL) getSome; @end diff --git a/test/ARCMT/objcmt-property.m.result b/test/ARCMT/objcmt-property.m.result index f1caec3137..7066a50a60 100644 --- a/test/ARCMT/objcmt-property.m.result +++ b/test/ARCMT/objcmt-property.m.result @@ -106,6 +106,12 @@ typedef char BOOL; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out + +@property(nonatomic, getter=getM, readonly) BOOL m; +@property(nonatomic, getter=getMA, readonly) BOOL MA; +@property(nonatomic, getter=getALL, readonly) BOOL ALL; +@property(nonatomic, getter=getMANY, readonly) BOOL MANY; +@property(nonatomic, getter=getSome, readonly) BOOL some; @end