class Foo {
public:
Foo();
void bar() [[clang::nonblocking]];
~Foo() [[clang::nonblocking]];
};
void Foo::bar() // no diagnostic
{
}
Foo::~Foo() // error: '~Foo' is missing exception specification 'noexcept'
{
}
Seems to come from Sema::CheckEquivalentExceptionSpec. Something about the function effect being part of the type triggers this.
It's easily worked around by copying the attribute to the destructor's definition.
I can look at this; please assign to me.