https://issues.dlang.org/show_bug.cgi?id=14161
--- Comment #9 from Steven Schveighoffer <schvei...@yahoo.com> --- (In reply to bearophile_hugs from comment #7) > But this behaviour looks a little surprising. So perhaps in this case > specifc it's better to give a shadowing error (with a warning/deprecation > phase first), to avoid ambiguity. Like with() when no actual ambiguity is > present in the code, no error message should be generated. Shadowing is only allowed on global scope. The reasons are simple: 1. You often have little control over what modules you import define. 2. You can use '.' to distinguish between your local symbol and the global one. (In reply to Ketmar Dark from comment #8) > i don't think that shadowing globals should always generate warning. i > believe that it's enough to generate warning only when there is possible > UFCS shadowing. I am not of the opinion that UFCS is so special we need to bend over backwards to make it work in all cases. The underlying request that must be implemented before we even consider adding a warning for a conflict is that you need to be able to use UFCS on function pointers or even nested or member functions. I don't think we should even do that, and without that, there isn't a point for a warning here. There is always the possibility to use normal function call syntax. --