// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-fragile-abi %s -o %t-rw.cpp
// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
// radar 7682149


void f(void (^block)(void));

@interface X {
	int y;
}
- (void)foo;
@end

@implementation X
- (void)foo {
    f(^{
  f(^{
    f(^{
      y=42;
    });
  });
});

}
@end

struct S {
  int y;
};

void foo () {
	struct S *SELF;
	f(^{
		f(^{
			SELF->y = 42;
		});
	});
}

// radar 7692419
@interface Bar
@end

void f(Bar *);
void q(void (^block)(void));

void x() {
        void (^myblock)(Bar *b) = ^(Bar *b) {
                q(^{
                        f(b);   
                });
        };
        
        Bar *b = (Bar *)42;
        myblock(b);
}
