O módulo Elixir Simple produz apenas “Argument Error”

Nov 01 2020

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

3 AlekseiMatiushkin Nov 02 2020 at 01:58

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