xref: /aosp_15_r20/external/clang/test/SemaObjC/exprs.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 %s -fsyntax-only -fblocks -verify -Wno-unreachable-code
2*67e74705SXin Li
3*67e74705SXin Li// rdar://6597252
4*67e74705SXin LiClass test1(Class X) {
5*67e74705SXin Li  return 1 ? X : X;
6*67e74705SXin Li}
7*67e74705SXin Li
8*67e74705SXin Li
9*67e74705SXin Li// rdar://6079877
10*67e74705SXin Livoid test2() {
11*67e74705SXin Li  id str = @"foo"
12*67e74705SXin Li          "bar\0"    // no-warning
13*67e74705SXin Li          @"baz"  " blarg";
14*67e74705SXin Li  id str2 = @"foo"
15*67e74705SXin Li            "bar"
16*67e74705SXin Li           @"baz"
17*67e74705SXin Li           " b\0larg";  // no-warning
18*67e74705SXin Li
19*67e74705SXin Li
20*67e74705SXin Li  if (@encode(int) == "foo") { }  // expected-warning {{result of comparison against @encode is unspecified}}
21*67e74705SXin Li}
22*67e74705SXin Li
23*67e74705SXin Li#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
24*67e74705SXin Livoid (^foo)(int, int) = ^(int x, int y) { int z = MAX(x, y); };
25*67e74705SXin Li
26*67e74705SXin Li
27*67e74705SXin Li
28*67e74705SXin Li// rdar://8445858
29*67e74705SXin Li@class Object;
30*67e74705SXin Listatic Object *g;
31*67e74705SXin Livoid test3(Object *o) {
32*67e74705SXin Li  // this is ok.
33*67e74705SXin Li  __sync_bool_compare_and_swap(&g, 0, o);
34*67e74705SXin Li}
35*67e74705SXin Li
36*67e74705SXin Li@class Incomplete_ObjC_class; // expected-note{{forward declaration of class here}}
37*67e74705SXin Listruct Incomplete_struct; // expected-note {{forward declaration}}
38*67e74705SXin Li
39*67e74705SXin Livoid test_encode() {
40*67e74705SXin Li  (void)@encode(Incomplete_ObjC_class); // expected-error {{incomplete type}}
41*67e74705SXin Li  (void)@encode(struct Incomplete_struct); // expected-error {{incomplete type}}
42*67e74705SXin Li  (void)@encode(Incomplete_ObjC_class*);
43*67e74705SXin Li  (void)@encode(id);
44*67e74705SXin Li}
45