Home | History | Annotate | Download | only in CodeGenObjCXX
      1 // RUN: %clang_cc1 -x objective-c++ -fblocks -triple x86_64-apple-darwin -fobjc-fragile-abi %s -verify -emit-llvm -o %t
      2 // rdar://8979379
      3 
      4 @interface A
      5 @end
      6 
      7 @interface B : A
      8 @end
      9 
     10 void f(int (^bl)(B* b));
     11 
     12 // Test1
     13 void g() {
     14   f(^(A* a) { return 0; });
     15 }
     16 
     17 // Test2
     18 void g1() {
     19   int (^bl)(B* b) = ^(A* a) { return 0; };
     20 }
     21 
     22 // Test3
     23 @protocol NSObject;
     24 
     25 void bar(id(^)(void));
     26 
     27 void foo(id <NSObject>(^objectCreationBlock)(void)) {
     28     return bar(objectCreationBlock);
     29 }
     30 
     31 // Test4
     32 struct S {
     33   S *(^a)() = ^{ // expected-warning {{C++11}}
     34     return this;
     35   };
     36 };
     37 S s;
     38 
     39 // Test5
     40 struct X {
     41   void f() {
     42     ^ {
     43       struct Nested { Nested *ptr = this; }; // expected-warning {{C++11}}
     44     } ();
     45   };
     46 };
     47