r191332 - ObjectiveC migrator: iDOn't mangle names when
Fariborz Jahanian
fjahanian at apple.com
Tue Sep 24 13:20:52 PDT 2013
Author: fjahanian
Date: Tue Sep 24 15:20:52 2013
New Revision: 191332
URL: http://llvm.org/viewvc/llvm-project?rev=191332&view=rev
Log:
ObjectiveC migrator: iDOn't mangle names when
NS_RETURNS_INNER_POINTER annotation is suggested on
a property. // rdar://15044991
Modified:
cfe/trunk/lib/ARCMigrate/ObjCMT.cpp
cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m
cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m.result
Modified: cfe/trunk/lib/ARCMigrate/ObjCMT.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ObjCMT.cpp?rev=191332&r1=191331&r2=191332&view=diff
==============================================================================
--- cfe/trunk/lib/ARCMigrate/ObjCMT.cpp (original)
+++ cfe/trunk/lib/ARCMigrate/ObjCMT.cpp Tue Sep 24 15:20:52 2013
@@ -53,6 +53,7 @@ class ObjCMigrateASTConsumer : public AS
ObjCMethodDecl *OM);
bool migrateProperty(ASTContext &Ctx, ObjCContainerDecl *D, ObjCMethodDecl *OM);
void migrateNsReturnsInnerPointer(ASTContext &Ctx, ObjCMethodDecl *OM);
+ void migratePropertyNsReturnsInnerPointer(ASTContext &Ctx, ObjCPropertyDecl *P);
void migrateFactoryMethod(ASTContext &Ctx, ObjCContainerDecl *CDecl,
ObjCMethodDecl *OM,
ObjCInstanceTypeFamily OIT_Family = OIT_None);
@@ -350,8 +351,14 @@ void ObjCMigrateASTConsumer::migrateObjC
ObjCMethodDecl *Method = (*M);
if (Method->isDeprecated())
continue;
- if (!migrateProperty(Ctx, D, Method))
- migrateNsReturnsInnerPointer(Ctx, Method);
+ migrateProperty(Ctx, D, Method);
+ migrateNsReturnsInnerPointer(Ctx, Method);
+ }
+ for (ObjCContainerDecl::prop_iterator P = D->prop_begin(),
+ E = D->prop_end(); P != E; ++P) {
+ ObjCPropertyDecl *Prop = *P;
+ if (!P->isDeprecated())
+ migratePropertyNsReturnsInnerPointer(Ctx, Prop);
}
}
@@ -831,7 +838,8 @@ bool ObjCMigrateASTConsumer::migrateProp
void ObjCMigrateASTConsumer::migrateNsReturnsInnerPointer(ASTContext &Ctx,
ObjCMethodDecl *OM) {
- if (OM->hasAttr<ObjCReturnsInnerPointerAttr>())
+ if (OM->isImplicit() ||
+ OM->hasAttr<ObjCReturnsInnerPointerAttr>())
return;
QualType RT = OM->getResultType();
@@ -844,6 +852,18 @@ void ObjCMigrateASTConsumer::migrateNsRe
Editor->commit(commit);
}
+void ObjCMigrateASTConsumer::migratePropertyNsReturnsInnerPointer(ASTContext &Ctx,
+ ObjCPropertyDecl *P) {
+ QualType T = P->getType();
+
+ if (!TypeIsInnerPointer(T) ||
+ !Ctx.Idents.get("NS_RETURNS_INNER_POINTER").hasMacroDefinition())
+ return;
+ edit::Commit commit(*Editor);
+ commit.insertBefore(P->getLocEnd(), " NS_RETURNS_INNER_POINTER ");
+ Editor->commit(commit);
+}
+
void ObjCMigrateASTConsumer::migrateMethods(ASTContext &Ctx,
ObjCContainerDecl *CDecl) {
if (CDecl->isDeprecated())
Modified: cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m?rev=191332&r1=191331&r2=191332&view=diff
==============================================================================
--- cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m (original)
+++ cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m Tue Sep 24 15:20:52 2013
@@ -36,6 +36,8 @@
#define NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased))
#endif
+#define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0)))
+
CF_IMPLICIT_BRIDGING_ENABLED
typedef unsigned long CFTypeID;
@@ -104,3 +106,19 @@ CF_IMPLICIT_BRIDGING_DISABLED
- (TTJSObjectRef)JSObject1;
- (JSObjectRef*)JSObject2;
@end
+
+// rdar://15044991
+typedef void *SecTrustRef;
+
+ at interface NSURLProtectionSpace
+ at property (readonly) SecTrustRef serverTrust NS_AVAILABLE;
+- (void *) FOO NS_AVAILABLE;
+ at property (readonly) void * mitTrust NS_AVAILABLE;
+
+ at property (readonly) void * mittiTrust;
+
+ at property (readonly) SecTrustRef XserverTrust;
+
+- (SecTrustRef) FOO1 NS_AVAILABLE;
+
+ at end
Modified: cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m.result
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m.result?rev=191332&r1=191331&r2=191332&view=diff
==============================================================================
--- cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m.result (original)
+++ cfe/trunk/test/ARCMT/objcmt-ns-returns-inner-pointer.m.result Tue Sep 24 15:20:52 2013
@@ -36,6 +36,8 @@
#define NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased))
#endif
+#define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0)))
+
CF_IMPLICIT_BRIDGING_ENABLED
typedef unsigned long CFTypeID;
@@ -104,3 +106,19 @@ CF_IMPLICIT_BRIDGING_DISABLED
- (TTJSObjectRef)JSObject1;
- (JSObjectRef*)JSObject2 NS_RETURNS_INNER_POINTER;
@end
+
+// rdar://15044991
+typedef void *SecTrustRef;
+
+ at interface NSURLProtectionSpace
+ at property (readonly) SecTrustRef NS_RETURNS_INNER_POINTER serverTrust NS_AVAILABLE;
+- (void *) FOO NS_AVAILABLE NS_RETURNS_INNER_POINTER;
+ at property (readonly) void * NS_RETURNS_INNER_POINTER mitTrust NS_AVAILABLE;
+
+ at property (readonly) void * NS_RETURNS_INNER_POINTER mittiTrust;
+
+ at property (readonly) SecTrustRef NS_RETURNS_INNER_POINTER XserverTrust;
+
+- (SecTrustRef) FOO1 NS_AVAILABLE NS_RETURNS_INNER_POINTER;
+
+ at end
More information about the cfe-commits
mailing list