El módulo Elixir Simple produce solo "Error de argumento"

Nov 01 2020

Tengo un módulo simple e independiente que produce:

elixir impl_bad.ex
** (ArgumentError) error de argumento

En iex:

=> iex
Erlang / OTP 23 [erts-11.1] [fuente] [64 bits] [smp: 12: 12] [ds: 12: 12: 10] [async-threads: 1] [hipe]

Elixir interactivo (1.9.4): presione Ctrl + C para salir (escriba h () ENTER para obtener ayuda)
iex (1)> c "impl_bad.ex"

== Error de compilación en el archivo impl_bad.ex ==
** (ArgumentError) error de argumento

** (ArgumentError) error de argumento

El código:

defmodule ImplBad hacer
  def run_addition_problems (aconfig) hacer
    do_addition_problems (aconfig)
  final
final

Coloque este código de 5 líneas en un archivo por sí mismo.

Sé que do_addition_problems () no existe, pero esperaría un error indefinido con un número de línea.

Extraje este código de un archivo de proyecto donde existe do_addition_problems ().

Esperaría un poco más de información del compilador. Tuve que realizar una "búsqueda binaria" desde un módulo sobre 1k LOC para identificar este problema.

¿Es esto un problema con elixir 1.9.4?

Respuestas

3 AlekseiMatiushkin Nov 02 2020 at 01:58

Esta es una cuestión de usar Erlang/OTP 23 y Elixir 1.9.4 simultáneamente.

Elixir 1.9 es más antiguo que OTP 23 , pero elixir aprovecha completamente OTP, por lo que se basa en algunas advertencias / mensajes provenientes del compilador de erlang durante la compilación.

Dicho esto, degradar OTP a la versión Elixir 1.9que conoce ( 21 estaría bien, creo) o actualizar Elixir a la versión reciente 1.11.1solucionaría el problema que produce la fantasía

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