From e80501ba640fae189d5f944b025a0079ec3c579f Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Wed, 11 Sep 2013 18:27:16 +0000 Subject: [PATCH] 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 --- lib/ARCMigrate/ObjCMT.cpp | 6 +++++- test/ARCMT/objcmt-property.m | 6 ++++++ test/ARCMT/objcmt-property.m.result | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) 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 -- 2.40.0