brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · c42d270 Raw
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