> 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.

Reply via email to