Introduced in:
https://github.com/D-Programming-Language/dmd/pull/4788
And, I found a long-standing wrong-code issue with out-contract, which the root issue would be same with.
class Foo
{
final @property void value(int val)
//in { assert(val == 0); }
out { assert(val == 0); } // assertion fails
body
{
}
}
void main()
{
auto foo = new Foo();
foo.value = 0;
}