// 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 <NSObject>(^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;
  };
}
