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

Reply via email to