// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %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);
}
