[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Parser / objc-init.m
blob2caa4a8c299c4efe3b58f04bf5b28ab2de505bbe
1 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -pedantic -Wno-objc-root-class %s
2 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-c99-designator -Wno-objc-root-class %s
3 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-c99-designator -Wno-objc-root-class -std=c++98 %s
4 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-c99-designator -Wno-objc-root-class -std=c++11 %s
6 @interface NSNumber;
7 - () METH;
8 - (unsigned) METH2;
9 @end
11 struct SomeStruct {
12   int x, y, z, q;
15 void test1(void) {
16         id objects[] = {[NSNumber METH]};
19 void test2(NSNumber x) { // expected-error {{interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}}
20         id objects[] = {[x METH]};
23 void test3(NSNumber *x) {
24         id objects[] = {[x METH]};
28 void test4(void) {
29   unsigned x[] = {[NSNumber METH2]+2};
32 void test5(NSNumber *x) {
33   unsigned y[] = {
34     [4][NSNumber METH2]+2,   // expected-warning {{use of GNU 'missing =' extension in designator}}
35     [4][x METH2]+2   // expected-warning {{use of GNU 'missing =' extension in designator}}
36   };
37   
38   struct SomeStruct z = {
39     .x = [x METH2], // ok in C++98.
40 #if __cplusplus >= 201103L
41     // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}}
42     // expected-note@-3 {{insert an explicit cast to silence this issue}}
43 #endif
44     .x [x METH2]    // expected-error {{expected '=' or another designator}}
45 #if __cplusplus >= 201103L
46     // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}}
47     // expected-note@-3 {{insert an explicit cast to silence this issue}}
48 #endif
49   };
52 @interface SemicolonsAppDelegate 
54   id i;
56 @property (assign) id window;
57 @end
59 @implementation SemicolonsAppDelegate
61   id i;
63   @synthesize window=i;
64 @end