blob: 44a3dac683d7b1a7b810213e7df5a8b3e7314413 [file] [log] [blame]
#if defined(__BLOCKS__) && defined(__clang__)
// rdar://8768050
#include <stdio.h>
#include <stdlib.h>
#include <Block.h>
static int expected_dtors;
class A {
private:
void *p;
public:
A() throw() {
}
A(const A &a) throw() : p(a.p) {
}
A &operator =(const A &a) throw() {
return *this;
}
~A() throw() {
expected_dtors--;
if (expected_dtors < 0) {
abort();
}
}
void m() const throw() {
}
};
#endif
int
main(void)
{
#if defined(__BLOCKS__) && defined(__clang__)
A a;
void (^b)(void) = Block_copy(^{
a.m();
});
b();
expected_dtors = 3;
Block_release(b);
#endif
return 0;
}