On Wed, 10 Nov 2010 21:34:07 -0500, bearophile <bearophileh...@lycos.com> wrote:

Do you seen anything wrong in this code? It compiles with no errors:

enum string[5] data = ["green", "magenta", "blue" "red", "yellow"];
static assert(data[4] == "yellow");
void main() {}


Yet that code asserts. it's an excellent example of why a sloppy compiler/language sooner or later comes back to bite your ass. I've recently had another bug caused by automatic joining of adjacent strings. I think this is the 3rd I have found in my D code. This is enough.

In C the joining of adjacent strings is sometimes useful, but explicit is better than implicit, and D has a short and good operator to perform joining of strings, the ~, and D strings are allowed to span multi-lines.

100% agree. Get rid of it. My suggestion is to make auto-concatenation an error and see how many unintended errors there are in phobos. This model of testing has helped to explain how features are bug prone in the past.

-Steve

P.S. WRT bearophile's constant nagging, I agree it's not the best way to be heard. But if you feel strongly about something, and it's not getting attention, I don't see another way. Note that if you didn't continuously nag about stylistic issues that are very subjective, nagging about real problems like this would carry more weight.

I wrote a very similar post that resulted in the destruction of class == null from the language (ironically, I think it could be inserted back into the language now that object.opEquals is called instead).

Reply via email to