On 22.06.2017 22:43, jmh530 wrote:
On Thursday, 22 June 2017 at 20:19:59 UTC, Timon Gehr wrote:
On 22.06.2017 22:02, jmh530 wrote:

The whole double parentheses is a bit ugly to me. Is there any problem with
out(return > 0)

out(a => {
    void foo()out(b => a == b){ return a; }
    return foo()>0;
}());

I'm confused. The compiler should know that these returns are inside lambdas.

The point is that two results are in scope, so you cannot call both of them 'return'. It's a corner case, but you asked for any problems.

Also, foo should not return void

Oops. That's a typo. Fixed version:

out(a => {
    int foo()out(b => a == b){ return a; }
    return foo()>0;
}())

and I'm not sure what the extra set of parentheses are for at the end.

That's calling the lambda.

Version that works today:

int bar()out(a){
    int foo()out(b){
        assert(a==b);
    }body{
        return a;
    }
    assert(foo()>0);
}body{
    return 2;
}

Reply via email to