Il modulo Elixir Simple produce solo "Argument Error"

Nov 01 2020

Ho un modulo semplice e autonomo che produce:

elisir impl_bad.ex
** (ArgumentError) errore dell'argomento

In iex:

=> iex
Erlang / OTP 23 [erts-11.1] [sorgente] [64 bit] [smp: 12: 12] [ds: 12: 12: 10] [thread asincroni: 1] [hipe]

Elisir interattivo (1.9.4): premi Ctrl + C per uscire (digita h () INVIO per aiuto)
iex (1)> c "impl_bad.ex"

== Errore di compilazione nel file impl_bad.ex ==
** (ArgumentError) errore dell'argomento

** (ArgumentError) errore dell'argomento

Il codice:

defmodule ImplBad do
  def run_addition_problems (aconfig) do
    do_addition_problems (aconfig)
  fine
fine

Inserisci questo codice di 5 righe in un file da solo.

So che do_addition_problems () non esiste ma mi aspetterei un errore indefinito con un numero di riga.

Ho estratto questo codice da un file di progetto in cui esiste do_addition_problems ().

Mi aspetto un po 'più di informazioni dal compilatore. Ho dovuto eseguire una "ricerca binaria" da un modulo di circa 1k LOC per individuare questo problema.

È un problema con elixir 1.9.4?

Risposte

3 AlekseiMatiushkin Nov 02 2020 at 01:58

Questo è un problema di utilizzo Erlang/OTP 23 e Elixir 1.9.4 simultaneamente.

Elixir 1.9 è più vecchio di OTP 23 , ma elixir sfrutta appieno OTP, quindi si basa su alcuni avvisi / messaggi provenienti dal compilatore erlang durante la compilazione.

Detto questo, il downgrade di OTP alla versione Elixir 1.9è a conoscenza ( 21 andrebbe bene, credo) o l' aggiornamento di Elixir alla recente 1.11.1risolverebbe il problema producendo 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