O módulo Elixir Simple produz apenas “Argument Error”
Eu tenho um módulo simples e autônomo que produz:
elixir impl_bad.ex ** (ArgumentError) erro de argumento
Em iex:
=> iex Erlang / OTP 23 [erts-11.1] [fonte] [64 bits] [smp: 12: 12] [ds: 12: 12: 10] [threads assíncronos: 1] [hipe] Elixir interativo (1.9.4) - pressione Ctrl + C para sair (digite h () ENTER para obter ajuda) iex (1)> c "impl_bad.ex" == Erro de compilação no arquivo impl_bad.ex == ** (ArgumentError) erro de argumento ** (ArgumentError) erro de argumento
O código:
defmodule ImplBad do
def run_addition_problems (aconfig) fazer
do_addition_problems (aconfig)
fim
fim
Coloque este código de 5 linhas em um arquivo sozinho.
Eu sei que do_addition_problems () não existe, mas esperaria um erro indefinido com um número de linha.
Extraí este código de um arquivo de projeto onde existe do_addition_problems ().
Eu esperaria um pouco mais de informações do compilador. Tive que realizar uma "pesquisa binária" em um módulo de cerca de 1k LOC para localizar esse problema.
Este é um problema com o elixir 1.9.4?
Respostas
Esta é uma questão de uso Erlang/OTP 23 e Elixir 1.9.4 simultaneamente.
O Elixir 1.9 é mais antigo que o OTP 23 , mas o elixir aproveita totalmente o OTP, portanto, ele depende de alguns avisos / mensagens provenientes do compilador erlang durante a compilação.
Dito isso, rebaixar o OTP para a versão que Elixir 1.9conhece ( 21 seria bom, eu acredito) ou atualizar o Elixir para o recente 1.11.1resolveria o problema que produz fantasia
== Compilation error in file /tmp/test.ex ==
** (CompileError) /tmp/test.ex:3: undefined function do_addition_problems/1
(elixir 1.11.1) src/elixir_locals.erl:114: anonymous fn/3 in :elixir_locals.ensure_no_undefined_local/3
(stdlib 3.13.2) erl_eval.erl:680: :erl_eval.do_apply/6