[erlang-bugs] Wrong warning when dispatching to a literal tuple
Jesper Louis Andersen
jesper.louis.andersen@REDACTED
Fri Dec 13 10:58:08 CET 2013
The compiler currently seem to understand rather few variants:
a:b
A:b
a:B
A:B
where a,b are atoms and A,B are variables. Everything else is an invalid call and generates a warning. Which is correct Erlang, since tuple-funs is a hack in place to handle the parameterised module parse transform and other old stuff. Note the compiler still generates an `old_apply` in this case so it allows the code to “work”, but it warns about the problematic form.
fun (element(1, {hello, 1})):world/0
would probably work for generated code. It uses the more modern “fun M:F/A” form.
Jesper Louis Andersen
Erlang Solutions Ltd., Copenhagen
On 13 Dec 2013, at 09:25, José Valim <jose.valim@REDACTED> wrote:
> The following code:
>
> -module(foo).
> -compile(export_all).
>
> sample() -> ({ hello, 1 }):world().
>
> Issues the following warning:
>
> foo.erl:4: Warning: invalid module and/or function name; this call will always fail
>
> Which is not true if there is a "hello" module defined.
> This issue has been reported here: http://stackoverflow.com/questions/20556472/elixir-protocols-in-erlang-a-strange-warning/20561973#20561973
>
> Thanks!
>
> José Valim
> www.plataformatec.com.br
> Skype: jv.ptec
> Founder and Lead Developer
> _______________________________________________
> erlang-bugs mailing list
> erlang-bugs@REDACTED
> http://erlang.org/mailman/listinfo/erlang-bugs
More information about the erlang-bugs
mailing list