On Friday, 18 October 2013 at 17:42:22 UTC, Jonathan M Davis wrote:
On Friday, October 18, 2013 18:32:32 bearophile wrote:
Currently D doesn't give an error or warning if in a method you
declare a local variable with the same name of a instance member. This is indeed a source of bugs and I have had similar problems.
Generally D prefers to minimize the number of warnings, so
according to the D style that should become an error.

There's no way that that's ever going to become an error. It's just too useful. The issue has come up before, and it's not going away. The prime
example is constructors.

this(int a, string b)
{
 this.a = a;
 this.b = b;
 ...
}

Too many people would get annoyed if they were required to name their local variables differently - especially in a case like this. If you want to avoid the problem, then just don't name your local variables the same as your member variables - the most obvious solution being to do name your member variables
differently - e.g. by prepending them with _.

- Jonathan M Davis

A warning would be enough. The thing is I didn't want to give it the same name. It was meant to be the class variable but the auto was a leftover from a test. A warning would have been nice, à la "do you really want this?". I would have seen it immediately.

Reply via email to