1// RUN: %clang_cc1 -x objective-c++ -fblocks -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 %s -verify -std=c++11 -emit-llvm -o %t 2// rdar://8979379 3 4@interface A 5@end 6 7@interface B : A 8@end 9 10void f(int (^bl)(B* b)); 11 12// Test1 13void g() { 14 f(^(A* a) { return 0; }); 15} 16 17// Test2 18void g1() { 19 int (^bl)(B* b) = ^(A* a) { return 0; }; 20} 21 22// Test3 23@protocol NSObject; 24 25void bar(id(^)(void)); 26 27void foo(id <NSObject>(^objectCreationBlock)(void)) { 28 return bar(objectCreationBlock); 29} 30 31// Test4 32struct S { 33 S *(^a)() = ^{ 34 return this; 35 }; 36}; 37S s; 38 39// Test5 40struct X { 41 void f() { 42 ^ { 43 struct Nested { Nested *ptr = this; }; 44 } (); 45 }; 46}; 47 48// Regression test for PR13314 49class FooClass { }; 50void fun() { 51 FooClass foovar; 52 ^() { // expected-warning {{expression result unused}} 53 return foovar; 54 }; 55} 56void gun() { 57 FooClass foovar; 58 [=]() { // expected-warning {{expression result unused}} 59 return foovar; 60 }; 61} 62