]> granicus.if.org Git - clang/commitdiff
objc-arc: bridge casts in non-arc mode are now
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 19 Dec 2011 22:52:53 +0000 (22:52 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 19 Dec 2011 22:52:53 +0000 (22:52 +0000)
error. // rdar://10597832

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

include/clang/Basic/DiagnosticParseKinds.td
lib/Parse/ParseExpr.cpp
test/PCH/Inputs/arc.h
test/SemaObjC/illegal-nonarc-bridged-cast.m

index 7ce2a8e92860c6f986b0d67560698160e78a8e5d..7a3e0e6a71b52a3f0ab5fb4e399fd15e73569c1f 100644 (file)
@@ -326,9 +326,8 @@ def err_illegal_super_cast : Error<
 let CategoryName = "ARC Parse Issue" in {
 def err_arc_bridge_retain : Error<
   "unknown cast annotation __bridge_retain; did you mean __bridge_retained?">;
-def warn_arc_bridge_retain : Warning<
-  "bridge casts will have no effect in non-arc mode and will be ignored">,
-  InGroup<DiagGroup<"bridge-casts-non-arc-mode">>;
+def err_arc_bridge_cast : Error<
+  "bridge casts will have no effect in non-arc mode">;
 }
   
 def err_objc_illegal_visibility_spec : Error<
index bb446f5ab23248645f1e4b4e2910fd2111dcd41d..bb26e28c122aab8119e1c5b90be440d96e0bcc20 100644 (file)
@@ -1826,7 +1826,7 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, bool stopIfCastExpr,
   if (BridgeCast && !getLang().ObjCAutoRefCount) {
     SourceLocation BridgeKeywordLoc = ConsumeToken();
     if (!PP.getSourceManager().isInSystemHeader(BridgeKeywordLoc))
-      Diag(BridgeKeywordLoc, diag::warn_arc_bridge_retain)
+      Diag(BridgeKeywordLoc, diag::err_arc_bridge_cast)
       << FixItHint::CreateReplacement(BridgeKeywordLoc,
                                       "");
     BridgeCast = false;
index 793fc643f23c65144be69a055022e055e9d88a30..304e612a0d91a1a19822a9a807a23f9ab9068fc0 100644 (file)
@@ -14,7 +14,13 @@ CFStringRef CFGetString();
 id CreateSomething();
 NSString *CreateNSString();
 
-typedef int array0[sizeof((__bridge id)CFCreateSomething())];
-typedef int array1[sizeof((__bridge CFTypeRef)CreateSomething())];
+#if __has_feature(objc_arc)
+#define BRIDGE __bridge
+#else
+#define BRIDGE
+#endif
+
+typedef int array0[sizeof((BRIDGE id)CFCreateSomething())];
+typedef int array1[sizeof((BRIDGE CFTypeRef)CreateSomething())];
 
 
index 04d82b9557781623143105e568e1d8122f41508d..53613dcb4457ea17949d5f10d232f741c3233b82 100644 (file)
@@ -16,19 +16,19 @@ id CreateSomething();
 NSString *CreateNSString();
 
 void from_cf() {
-  id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
-  id obj2 = (__bridge_transfer NSString*)CFCreateString(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
-  (__bridge int*)CFCreateSomething();  // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}  \
+  id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-error {{bridge casts will have no effect in non-arc mode}}
+  id obj2 = (__bridge_transfer NSString*)CFCreateString(); // expected-error {{bridge casts will have no effect in non-arc mode}}
+  (__bridge int*)CFCreateSomething();  // expected-error {{bridge casts will have no effect in non-arc mode}}  \
                                        // expected-warning {{expression result unused}}
-  id obj3 = (__bridge id)CFGetSomething(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
-  id obj4 = (__bridge NSString*)CFGetString(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
+  id obj3 = (__bridge id)CFGetSomething(); // expected-error {{bridge casts will have no effect in non-arc mode}}
+  id obj4 = (__bridge NSString*)CFGetString(); // expected-error {{bridge casts will have no effect in non-arc mode}}
 }
 
 void to_cf(id obj) {
-  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
-  CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
-  CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
-  CFStringRef cf4 = (__bridge CFStringRef)CreateNSString(); // expected-warning {{bridge casts will have no effect in non-arc mode and will be ignored}}
+  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // expected-error {{bridge casts will have no effect in non-arc mode}}
+  CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString(); // expected-error {{bridge casts will have no effect in non-arc mode}}
+  CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); // expected-error {{bridge casts will have no effect in non-arc mode}}
+  CFStringRef cf4 = (__bridge CFStringRef)CreateNSString(); // expected-error {{bridge casts will have no effect in non-arc mode}} 
 }
 
 void fixits() {