On Mon, Aug 15, 2011 at 1:57 PM, Andrei Alexandrescu <SeeWebsiteForEmail@erdani.org> wrote:
On 8/15/11 2:19 PM, Jacob Carlborg wrote:
On 2011-08-15 21:00, Walter Bright wrote:
On 8/15/2011 3:54 AM, Timon Gehr wrote:
'When the last ExpressionStatement in a function body is missing the
';', it is
implicitly returned.'

This has been proposed several times before, it was also proposed for
C++0x. The difficulty is it makes having a ; or not substantially alter
the semantics. The history of these languages is that the presence or
absence of ; can be hard to spot, as in:

for (int i = 0; i < 10; i++);
... do this ...

which has cost at least one expert developer I know an entire afternoon
staring at it convinced there was a compiler bug because his loop
executed only once.

(And this is why D disallows this syntax.)

Can't we always automatically return the last expression, even if it
ends with a semicolon?

Then two semicolons mean return void :o).

If you want void, you have to use this as your last expression:
...- --- .. -..;