with and shadowing variables
Steven Schveighoffer
schveiguy at gmail.com
Mon Jul 23 17:26:16 UTC 2018
On 7/22/18 8:13 AM, Anonymouse wrote:
> Can this be made a compiler warning?
>
> struct Foo
> {
> int i;
> }
>
> void main()
> {
> Foo foo;
>
> with (foo)
> {
> i = 42;
> int i;
> i = 24;
> }
> }
>
> I'm hesitant to file a bug because it'll just be immediately closed with
> a link to https://dlang.org/spec/statement.html#WithStatement. I
> understand that's how it works, but it's weird and weak to human mistakes.
I'm with Jonathan, it should be an error. It shouldn't matter what scope
you declared `i` in, just when you use it, the ambiguity should trigger.
The fix is super-simple, name it something else!
Note that this won't fix other ambiguities. For example, if Foo has an
opDispatch that matches "i", or `i` is a UFCS function (actually, I
don't know if UFCS works using `with`).
-Steve
More information about the Digitalmars-d
mailing list