> I think that if you have introduced a var anywhere in your module that has the same name as a zero arity function then this warning should be shown that solves all the problems that have been stated.
I have explained in a previous reply why this is harmful and why it does not solve all the problems stated. The warning will not only show up when you introduce a variable, but also when you introduce a new function in the module and that will trigger warnings in unrelated part of the code. While having the discussion is important, it is also important to move the discussion forward. This is the third or fourth time that "emit a warning only if there is a variable and a function" is proposed after it was already explained why such is considered harmful. This means either 1. the previous reply was not read, which is frustrating because it puts me in the position of repeating the same points over and over again, or 2. the previous reply was read but folks don't agree with its conclusions. If the latter, nobody is explaining *what they don't agree with*, which does not allow the conversation to move forward. I will copy the reply on why warning only if there is a function is a bad idea one last time: > So going back to the cases the current warning is meant to solve that I sent in an earlier email, warning only if it shadows a function, does not solve the first case although it does also solve the second case. > However, it does not solve the contextual overhead, When changing or reading code, I still need to carefully look at the surrounding context to see if the variable is not being used in order to avoid the warning (or I can write the code and wait for the compiler to tell me). > But to make things worse, the suggestion of only warning if there is a function, means that by simply adding a function into a given module, you may now get warnings on other functions in that same module, simply because you defined a new function 100LOC below. It is even worse if you consider imports: if you are importing or using an external library and it adds a new function to its API, you may have warnings when updating your dependency. > Those are really undesired consequences. I believe we should either define that one of them has higher precedence (Elixir v1.3) or make sure they don't conflict (Elixir v1.4). I would love to continue the discussion but if it ultimately ends up with me repeating previous points, it will eventually lose interest. *José Valim* www.plataformatec.com.br Skype: jv.ptec Founder and Director of R&D On Mon, Dec 5, 2016 at 11:57 AM, Ólafur Arason <[email protected]> wrote: > I think that if you have introduced a var anywhere in your module that has > the same name as a zero arity function then this warning should be shown > that solves all the problems that have been stated. > > We compile our code with warnings as errors so it's very important for us > to have warnings that point out problems in our code. > > I feel like the sentiment about being able to use zero arity function > without parentheses is pretty split in this thread. If there was a > consensus about this warning I would be fine with it. > > Regards, > Olaf > > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/elixir-lang-core/874996b8-6759-4a77-be31- > d7e050cd6123%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4LzSgcRQxUiCN1qnmU5%2BaK8LN6nLhBy-cOn75cSfdYgxA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
