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