1*67e74705SXin Li 2*67e74705SXin Li@protocol NSObject 3*67e74705SXin Li- (id)retain; 4*67e74705SXin Li- (unsigned)retainCount; 5*67e74705SXin Li- (oneway void)release; 6*67e74705SXin Li- (id)autorelease; 7*67e74705SXin Li@end 8*67e74705SXin Li 9*67e74705SXin Li@interface NSObject <NSObject> {} 10*67e74705SXin Li- (id)init; 11*67e74705SXin Li 12*67e74705SXin Li+ (id)new; 13*67e74705SXin Li+ (id)alloc; 14*67e74705SXin Li- (void)dealloc; 15*67e74705SXin Li 16*67e74705SXin Li- (void)finalize; 17*67e74705SXin Li 18*67e74705SXin Li- (id)copy; 19*67e74705SXin Li- (id)mutableCopy; 20*67e74705SXin Li@end 21*67e74705SXin Li 22*67e74705SXin Li@interface A : NSObject 23*67e74705SXin Li@end 24*67e74705SXin Li 25*67e74705SXin Listruct UnsafeS { 26*67e74705SXin Li A *__unsafe_unretained unsafeObj; 27*67e74705SXin Li}; 28*67e74705SXin Li 29*67e74705SXin Liid global_foo; 30*67e74705SXin Li 31*67e74705SXin Livoid test1(A *a, struct UnsafeS *unsafeS) { 32*67e74705SXin Li [unsafeS->unsafeObj retain]; 33*67e74705SXin Li id foo = [unsafeS->unsafeObj retain]; // no warning. 34*67e74705SXin Li [global_foo retain]; 35*67e74705SXin Li [a retainCount]; 36*67e74705SXin Li} 37*67e74705SXin Li 38*67e74705SXin Li// RUN: not %clang_cc1 -arcmt-check -triple x86_64-apple-darwin10 %s -serialize-diagnostic-file %t.diag 39*67e74705SXin Li// RUN: c-index-test -read-diagnostics %t.diag > %t 2>&1 40*67e74705SXin Li// RUN: FileCheck --input-file=%t %s 41*67e74705SXin Li 42*67e74705SXin Li// CHECK: {{.*}}check-with-serialized-diag.m:32:4: error: [rewriter] it is not safe to remove 'retain' message on an __unsafe_unretained type 43*67e74705SXin Li// CHECK-NEXT: Number FIXITs = 0 44*67e74705SXin Li// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:34:4: error: [rewriter] it is not safe to remove 'retain' message on a global variable 45*67e74705SXin Li// CHECK-NEXT: Number FIXITs = 0 46*67e74705SXin Li// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:32:23: error: ARC forbids explicit message send of 'retain' 47*67e74705SXin Li// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:32:4 {{.*}}check-with-serialized-diag.m:32:22 48*67e74705SXin Li// CHECK-NEXT: Number FIXITs = 0 49*67e74705SXin Li// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:34:15: error: ARC forbids explicit message send of 'retain' 50*67e74705SXin Li// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:34:4 {{.*}}check-with-serialized-diag.m:34:14 51*67e74705SXin Li// CHECK-NEXT: Number FIXITs = 0 52*67e74705SXin Li// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:35:6: error: ARC forbids explicit message send of 'retainCount' 53*67e74705SXin Li// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:35:4 {{.*}}check-with-serialized-diag.m:35:5 54*67e74705SXin Li// CHECK-NEXT: Number FIXITs = 0 55*67e74705SXin Li 56