// REQUIRED_ARGS: -check=in=off -check=invariant=off
// PERMUTE_ARGS:
class C
{
    int foo(int a)
    in { assert(a != 0); } // skipped
    out(res) { assert(res != 0, "out"); } // triggered
    do
    {
        return a;
    }
    invariant // skipped
    {
        assert(false);
    }
}
void main()
{
    import core.exception : AssertError;
    auto c = new C;
    bool catched;
    try
        c.foo(0);
    catch (AssertError e)
    {
        assert(e.msg == "out");
        catched = e.msg == "out";
    }
    if (!catched)
        assert(0);
}