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
