forked from OSchip/llvm-project
Objective-C. Revert my patch in r211234.
llvm-svn: 211237
This commit is contained in:
parent
da80386700
commit
1ad83a35b1
|
@ -3168,9 +3168,7 @@ diagnoseObjCARCConversion(Sema &S, SourceRange castRange,
|
||||||
if ((castACTC == ACTC_coreFoundation && exprACTC == ACTC_retainable &&
|
if ((castACTC == ACTC_coreFoundation && exprACTC == ACTC_retainable &&
|
||||||
ObjCBridgeRelatedAttrFromType(castType, TDNDecl)) ||
|
ObjCBridgeRelatedAttrFromType(castType, TDNDecl)) ||
|
||||||
(exprACTC == ACTC_coreFoundation && castACTC == ACTC_retainable &&
|
(exprACTC == ACTC_coreFoundation && castACTC == ACTC_retainable &&
|
||||||
ObjCBridgeRelatedAttrFromType(castExprType, TDNDecl)) ||
|
ObjCBridgeRelatedAttrFromType(castExprType, TDNDecl)))
|
||||||
(exprACTC ==ACTC_voidPtr && castACTC == ACTC_retainable &&
|
|
||||||
CCK == Sema::CCK_ImplicitConversion))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
unsigned srcKind = 0;
|
unsigned srcKind = 0;
|
||||||
|
|
|
@ -158,8 +158,8 @@ void * cvt(id arg)
|
||||||
(void)(__autoreleasing id**)voidp_val;
|
(void)(__autoreleasing id**)voidp_val;
|
||||||
(void)(void*)voidp_val;
|
(void)(void*)voidp_val;
|
||||||
(void)(void**)arg; // expected-error {{disallowed}}
|
(void)(void**)arg; // expected-error {{disallowed}}
|
||||||
cvt((void*)arg); // expected-error 1 {{requires a bridged cast}} \
|
cvt((void*)arg); // expected-error 2 {{requires a bridged cast}} \
|
||||||
// expected-note 1 {{use __bridge to}} expected-note {{use CFBridgingRetain call}}
|
// expected-note 2 {{use __bridge to}} expected-note {{use CFBridgingRelease call}} expected-note {{use CFBridgingRetain call}}
|
||||||
cvt(0);
|
cvt(0);
|
||||||
(void)(__strong id**)(0);
|
(void)(__strong id**)(0);
|
||||||
return arg; // expected-error {{requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRetain call}}
|
return arg; // expected-error {{requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRetain call}}
|
||||||
|
|
|
@ -36,7 +36,7 @@ void f(BOOL b, id p) {
|
||||||
CFUUIDRef _uuid;
|
CFUUIDRef _uuid;
|
||||||
NSString *_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
|
NSString *_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
|
||||||
_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
|
_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
|
||||||
_uuidString = CFRetain(_uuid);
|
_uuidString = CFBridgingRelease(CFRetain(_uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@implementation NSString (StrExt)
|
@implementation NSString (StrExt)
|
||||||
|
|
|
@ -16,8 +16,10 @@ void * cvt(id arg)
|
||||||
(void)(void*)voidp_val;
|
(void)(void*)voidp_val;
|
||||||
(void)(void**)arg; // expected-error {{cast of an Objective-C pointer to 'void **' is disallowed with ARC}}
|
(void)(void**)arg; // expected-error {{cast of an Objective-C pointer to 'void **' is disallowed with ARC}}
|
||||||
cvt((void*)arg); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
|
cvt((void*)arg); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
|
||||||
// expected-note 1 {{use __bridge to convert directly (no change in ownership)}} \
|
// expected-error {{implicit conversion of C pointer type 'void *' to Objective-C pointer type 'id' requires a bridged cast}} \
|
||||||
|
// expected-note 2 {{use __bridge to convert directly (no change in ownership)}} \
|
||||||
// expected-note {{use CFBridgingRetain call to make an ARC object available as a +1 'void *'}} \
|
// expected-note {{use CFBridgingRetain call to make an ARC object available as a +1 'void *'}} \
|
||||||
|
// expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'void *' into ARC}}
|
||||||
cvt(0);
|
cvt(0);
|
||||||
(void)(__strong id**)(0);
|
(void)(__strong id**)(0);
|
||||||
return arg; // expected-error {{implicit conversion of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
|
return arg; // expected-error {{implicit conversion of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
|
||||||
|
|
|
@ -285,7 +285,7 @@ void test11(id op, void *vp) {
|
||||||
b = (nil == vp);
|
b = (nil == vp);
|
||||||
|
|
||||||
b = (vp == op); // expected-error {{implicit conversion of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRetain call}}
|
b = (vp == op); // expected-error {{implicit conversion of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRetain call}}
|
||||||
b = (op == vp);
|
b = (op == vp); // expected-error {{implicit conversion of C pointer type 'void *' to Objective-C pointer type 'id' requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRelease call}}
|
||||||
}
|
}
|
||||||
|
|
||||||
void test12(id collection) {
|
void test12(id collection) {
|
||||||
|
@ -782,19 +782,3 @@ void foo(NSArray *array) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rdar://16627903
|
|
||||||
extern void abort();
|
|
||||||
#define TKAssertEqual(a, b) do{\
|
|
||||||
__typeof(a) a_res = (a);\
|
|
||||||
__typeof(b) b_res = (b);\
|
|
||||||
if ((a_res) != (b_res)) {\
|
|
||||||
abort();\
|
|
||||||
}\
|
|
||||||
}while(0)
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
id object;
|
|
||||||
TKAssertEqual(object, nil);
|
|
||||||
TKAssertEqual(object, (id)nil);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue