// 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 // rdar://8979379 @interface A @end @interface B : A @end void f(int (^bl)(B* b)); // Test1 void g() { f(^(A* a) { return 0; }); } // Test2 void g1() { int (^bl)(B* b) = ^(A* a) { return 0; }; } // Test3 @protocol NSObject; void bar(id(^)(void)); void foo(id (^objectCreationBlock)(void)) { return bar(objectCreationBlock); } // Test4 struct S { S *(^a)() = ^{ return this; }; }; S s; // Test5 struct X { void f() { ^ { struct Nested { Nested *ptr = this; }; } (); }; }; // Regression test for PR13314 class FooClass { }; void fun() { FooClass foovar; ^() { // expected-warning {{expression result unused}} return foovar; }; } void gun() { FooClass foovar; [=]() { // expected-warning {{expression result unused}} return foovar; }; }