xref: /aosp_15_r20/external/clang/test/ARCMT/check-with-serialized-diag.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
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