On Sunday, 24 November 2013 at 15:35:40 UTC, bearophile wrote:
Maxim Fomin:

This is identifiers shadowing issue. In best case you could not define boolean f, so the problem would not arise in a first place.

See also the discussion here:
http://d.puremagic.com/issues/show_bug.cgi?id=9521

Is it right for with to not give an error here?


struct Foo { int x; }
int x;
void main() {
    Foo f;
    with (f) {
        x++;
    }
}


Silent shadowing of global (module-level in both Python and D) names has caused me many problems along the years.

Bye,
bearophile

Yes, it is confusing. It is especially confusing in an unstable language with absent adequate spec. For example, I can learn C namespace rules, but in D case it is useless. Unfortunately what is right in cases like above depends on what Walter & Andrei think so we stuck with their opinions on the subject.

(I think emitting at least warning would be good)

Reply via email to