]> granicus.if.org Git - clang/commitdiff
ObjectiveC migrator. Please annotation of properties with
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 5 Nov 2013 22:28:30 +0000 (22:28 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 5 Nov 2013 22:28:30 +0000 (22:28 +0000)
NS_RETURNS_INNER_POINTER under -objcmt-returns-innerpointer-property
flag (off by default), as older compilers do not support such annotations.
// rdar://15396636

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194100 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Options.td
include/clang/Frontend/FrontendOptions.h
lib/ARCMigrate/ObjCMT.cpp
lib/Frontend/CompilerInvocation.cpp
test/ARCMT/objcmt-ns-returns-inner-pointer.m
test/ARCMT/objcmt-ns-returns-inner-pointer.m.result

index 3e37bc5518769f95bc2646dbf4212435ca768841..cc2de9f914f4b784bf292cae1c8fac25be82cd71 100644 (file)
@@ -181,6 +181,9 @@ def objcmt_migrate_protocol_conformance : Flag<["-"], "objcmt-migrate-protocol-c
 def objcmt_atomic_property : Flag<["-"], "objcmt-atomic-property">,
   Flags<[CC1Option]>,
   HelpText<"Make migration to 'atomic' properties">;
+def objcmt_returns_innerpointer_property : Flag<["-"], "objcmt-returns-innerpointer-property">, Flags<[CC1Option]>,
+  HelpText<"Enable migration to annotate property with NS_RETURNS_INNER_POINTER">;
+
 // Make sure all other -ccc- options are rejected.
 def ccc_ : Joined<["-"], "ccc-">, Group<internal_Group>, Flags<[Unsupported]>;
 
index b77c90b6730ab9cd980ac4233ba7f0b14340fe31..eab330d028e828253658ecf05e394964bac3a412 100644 (file)
@@ -175,13 +175,16 @@ public:
     ObjCMT_ProtocolConformance = 0x80,
     /// \brief prefer 'atomic' property over 'nonatomic'.
     ObjCMT_AtomicProperty = 0x100,
+    /// \brief annotate property with NS_RETURNS_INNER_POINTER
+    ObjCMT_ReturnsInnerPointerProperty = 0x200,
     ObjCMT_MigrateDecls = (ObjCMT_ReadonlyProperty | ObjCMT_ReadwriteProperty |
                            ObjCMT_Annotation | ObjCMT_Instancetype |
                            ObjCMT_NsMacros | ObjCMT_ProtocolConformance),
     ObjCMT_MigrateAll = (ObjCMT_Literals | ObjCMT_Subscripting |
                          ObjCMT_ReadonlyProperty | ObjCMT_ReadwriteProperty |
                          ObjCMT_Annotation | ObjCMT_Instancetype |
-                         ObjCMT_NsMacros | ObjCMT_ProtocolConformance)
+                         ObjCMT_NsMacros | ObjCMT_ProtocolConformance |
+                         ObjCMT_ReturnsInnerPointerProperty)
   };
   unsigned ObjCMTAction;
 
index f2f355c30f9dd855d7c30c2278b9427bb22bd017..34cc073044a7c7bb3f186ddab50753ca73f135c4 100644 (file)
@@ -416,6 +416,9 @@ void ObjCMigrateASTConsumer::migrateObjCInterfaceDecl(ASTContext &Ctx,
     if (ASTMigrateActions & FrontendOptions::ObjCMT_Annotation)
       migrateNsReturnsInnerPointer(Ctx, Method);
   }
+  if (!(ASTMigrateActions & FrontendOptions::ObjCMT_ReturnsInnerPointerProperty))
+    return;
+  
   for (ObjCContainerDecl::prop_iterator P = D->prop_begin(),
        E = D->prop_end(); P != E; ++P) {
     ObjCPropertyDecl *Prop = *P;
index a523acfc431a9ff7a8c647fb19e21586b4f240a6..d419d8a9eaf659fddf82b9293bb908e67cdcfca0 100644 (file)
@@ -805,6 +805,8 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
     Opts.ObjCMTAction |= FrontendOptions::ObjCMT_ReadwriteProperty;
   if (Args.hasArg(OPT_objcmt_migrate_annotation))
     Opts.ObjCMTAction |= FrontendOptions::ObjCMT_Annotation;
+  if (Args.hasArg(OPT_objcmt_returns_innerpointer_property))
+    Opts.ObjCMTAction |= FrontendOptions::ObjCMT_ReturnsInnerPointerProperty;
   if (Args.hasArg(OPT_objcmt_migrate_instancetype))
     Opts.ObjCMTAction |= FrontendOptions::ObjCMT_Instancetype;
   if (Args.hasArg(OPT_objcmt_migrate_nsmacros))
index bec0c4b249d98e3e2a6fed015da8aced98d4236e..bff7d80b94145c012b1d7a674978c6e39e589ed4 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-annotation -objcmt-migrate-readwrite-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11
+// RUN: %clang_cc1 -objcmt-returns-innerpointer-property -objcmt-migrate-annotation -objcmt-migrate-readwrite-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11
 // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result
 
index 438b5bd5a37c99d47d7cc99e3254a810d20251e1..8048e06748aa2383a2ea062142c2a4ebb72c06bb 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-annotation -objcmt-migrate-readwrite-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11
+// RUN: %clang_cc1 -objcmt-returns-innerpointer-property -objcmt-migrate-annotation -objcmt-migrate-readwrite-property -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11
 // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result