46 lines · plain
1// RUN: %clang_cc1 %s -fsyntax-only -fblocks -verify -Wno-unreachable-code2 3Class test1(Class X) {4 return 1 ? X : X;5}6 7void test2(void) {8 id str = @"foo" 9 "bar\0" // no-warning10 @"baz" " blarg";11 id str2 = @"foo" 12 "bar"13 @"baz"14 " b\0larg"; // no-warning15 16 17 if (@encode(int) == "foo") { } // expected-warning {{result of comparison against @encode is unspecified}}18}19 20#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })21void (^foo)(int, int) = ^(int x, int y) { int z = MAX(x, y); };22 23@class Object;24static Object *g;25void test3(Object *o) {26 // this is ok.27 __sync_bool_compare_and_swap(&g, 0, o);28}29 30@class Incomplete_ObjC_class; // expected-note{{forward declaration of class here}}31struct Incomplete_struct; // expected-note {{forward declaration}}32 33void test_encode(void) {34 (void)@encode(Incomplete_ObjC_class); // expected-error {{incomplete type}}35 (void)@encode(struct Incomplete_struct); // expected-error {{incomplete type}}36 (void)@encode(Incomplete_ObjC_class*);37 (void)@encode(id);38}39 40void gh154046(void) {41 (void)(const char[]) {42 [0] = @encode(int), // expected-error {{incompatible pointer to integer conversion initializing 'const char' with an expression of type 'char[2]'}}43 [1] = @encode(float) // expected-error {{incompatible pointer to integer conversion initializing 'const char' with an expression of type 'char[2]'}}44 }[1];45}46