Home | History | Annotate | Download | only in Parser
      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-objc-root-class %s
      3 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class -std=c++98 %s
      4 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class -std=c++11 %s
      5 // rdar://5707001
      6 
      7 @interface NSNumber;
      8 - () METH;
      9 - (unsigned) METH2;
     10 @end
     11 
     12 struct SomeStruct {
     13   int x, y, z, q;
     14 };
     15 
     16 void test1() {
     17 	id objects[] = {[NSNumber METH]};
     18 }
     19 
     20 void test2(NSNumber x) { // expected-error {{interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}}
     21 	id objects[] = {[x METH]};
     22 }
     23 
     24 void test3(NSNumber *x) {
     25 	id objects[] = {[x METH]};
     26 }
     27 
     28 
     29 // rdar://5977581
     30 void test4() {
     31   unsigned x[] = {[NSNumber METH2]+2};
     32 }
     33 
     34 void test5(NSNumber *x) {
     35   unsigned y[] = {
     36     [4][NSNumber METH2]+2,   // expected-warning {{use of GNU 'missing =' extension in designator}}
     37     [4][x METH2]+2   // expected-warning {{use of GNU 'missing =' extension in designator}}
     38   };
     39   
     40   struct SomeStruct z = {
     41     .x = [x METH2], // ok in C++98.
     42 #if __cplusplus >= 201103L
     43     // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}}
     44     // expected-note@-3 {{insert an explicit cast to silence this issue}}
     45 #endif
     46     .x [x METH2]    // expected-error {{expected '=' or another designator}}
     47 #if __cplusplus >= 201103L
     48     // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}}
     49     // expected-note@-3 {{insert an explicit cast to silence this issue}}
     50 #endif
     51   };
     52 }
     53 
     54 // rdar://7370882
     55 @interface SemicolonsAppDelegate 
     56 {
     57   id i;
     58 }
     59 @property (assign) id window;
     60 @end
     61 
     62 @implementation SemicolonsAppDelegate
     63 {
     64   id i;
     65 }
     66   @synthesize window=i;
     67 @end
     68 
     69 
     70 
     71