From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- clang/test/ARCMT/check-with-serialized-diag.m | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 clang/test/ARCMT/check-with-serialized-diag.m (limited to 'clang/test/ARCMT/check-with-serialized-diag.m') diff --git a/clang/test/ARCMT/check-with-serialized-diag.m b/clang/test/ARCMT/check-with-serialized-diag.m new file mode 100644 index 0000000..d8073d0 --- /dev/null +++ b/clang/test/ARCMT/check-with-serialized-diag.m @@ -0,0 +1,55 @@ + +@protocol NSObject +- (id)retain; +- (unsigned)retainCount; +- (oneway void)release; +- (id)autorelease; +@end + +@interface NSObject {} +- (id)init; + ++ (id)new; ++ (id)alloc; +- (void)dealloc; + +- (void)finalize; + +- (id)copy; +- (id)mutableCopy; +@end + +@interface A : NSObject +@end + +struct UnsafeS { + A *__unsafe_unretained unsafeObj; +}; + +id global_foo; + +void test1(A *a, struct UnsafeS *unsafeS) { + [unsafeS->unsafeObj retain]; + id foo = [unsafeS->unsafeObj retain]; // no warning. + [global_foo retain]; + [a retainCount]; +} + +// RUN: not %clang_cc1 -arcmt-check -triple x86_64-apple-darwin10 %s -serialize-diagnostic-file %t.diag +// RUN: c-index-test -read-diagnostics %t.diag > %t 2>&1 +// RUN: FileCheck --input-file=%t %s + +// CHECK: {{.*}}check-with-serialized-diag.m:32:4: error: [rewriter] it is not safe to remove 'retain' message on an __unsafe_unretained type +// CHECK-NEXT: Number FIXITs = 0 +// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:34:4: error: [rewriter] it is not safe to remove 'retain' message on a global variable +// CHECK-NEXT: Number FIXITs = 0 +// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:32:4: error: ARC forbids explicit message send of 'retain' +// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:32:23 {{.*}}check-with-serialized-diag.m:32:29 +// CHECK-NEXT: Number FIXITs = 0 +// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:34:4: error: ARC forbids explicit message send of 'retain' +// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:34:15 {{.*}}check-with-serialized-diag.m:34:21 +// CHECK-NEXT: Number FIXITs = 0 +// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:35:4: error: ARC forbids explicit message send of 'retainCount' +// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:35:6 {{.*}}check-with-serialized-diag.m:35:17 +// CHECK-NEXT: Number FIXITs = 0 + -- cgit v1.2.3