On Wed, 02 Jun 2010 16:50:05 -0400, Alex Makhotin <a...@bitprox.com> wrote:

Steven Schveighoffer wrote:
where we don't want to (I've done it many times). This is one of those rare cases where people can easily type valid code that does not do what they want.

The reason I ask is because I sometimes do empty statements intentionally by placing a semicolon (surprised?). DMD doesn't allow me to do it, so I put {} as it asks.

No, not surprised. But compare the ratio of how many times someone wants to have an empty loop/if statement to how many times someone accidentally forms one. Empty loops are sometimes desired, and I think the pain of requiring {} is worth the savings of not having accidents interpreted as intentions.

In contrast, Microsoft C/C++ does(with opt. /Wall):
warning C4390: ';' : empty controlled statement found; is this the intent?

I think it's correct way it should be done.

It is a judgement call, I think D made the right decision on disallowing it, even without warnings turned on. In a couple weeks you will forget about that one time you had to write an empty loop :)

And about the question of omitting semicolon. I don't like the optional use of it. In this respect I don't like the GO's way it inserts semicolons automatically by the lexer(!).

Just one excerpt from http://golang.org/doc/effective_go.html
One caveat. You should never put the opening brace of a control structure (if, for, switch, or select) on the next line. If you do, a semicolon will be inserted before the brace, which could cause unwanted effects. Write them like this
 if i < f() {
    g()
}
 not like this
 if i < f()  // wrong!
{           // wrong!
    g()
}

Oh, my, god. This is horrendous. Their *default* interpretation is "hey, this guy obviously wants an if statement that does nothing"?


I prefer ANSI(Allman) style(second example, wrong).
They want to force Java-like style which I dislike much.

I do too.   You will not find me using go until they change this.

-Steve

Reply via email to