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).