diff options
Diffstat (limited to 'clang/test/SemaObjC/exprs.m')
-rw-r--r-- | clang/test/SemaObjC/exprs.m | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/exprs.m b/clang/test/SemaObjC/exprs.m new file mode 100644 index 0000000..b198cba --- /dev/null +++ b/clang/test/SemaObjC/exprs.m @@ -0,0 +1,44 @@ +// RUN: %clang_cc1 %s -fsyntax-only -fblocks -verify -Wno-unreachable-code + +// rdar://6597252 +Class test1(Class X) { + return 1 ? X : X; +} + + +// rdar://6079877 +void test2() { + id str = @"foo" + "bar\0" // no-warning + @"baz" " blarg"; + id str2 = @"foo" + "bar" + @"baz" + " b\0larg"; // no-warning + + + if (@encode(int) == "foo") { } // expected-warning {{result of comparison against @encode is unspecified}} +} + +#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; }) +void (^foo)(int, int) = ^(int x, int y) { int z = MAX(x, y); }; + + + +// rdar://8445858 +@class Object; +static Object *g; +void test3(Object *o) { + // this is ok. + __sync_bool_compare_and_swap(&g, 0, o); +} + +@class Incomplete_ObjC_class; // expected-note{{forward declaration of class here}} +struct Incomplete_struct; // expected-note {{forward declaration}} + +void test_encode() { + (void)@encode(Incomplete_ObjC_class); // expected-error {{incomplete type}} + (void)@encode(struct Incomplete_struct); // expected-error {{incomplete type}} + (void)@encode(Incomplete_ObjC_class*); + (void)@encode(id); +} |