Moduł Elixir Simple generuje tylko „Błąd argumentu”
Mam prosty, samodzielny moduł, który daje:
elixir impl_bad.ex Błąd argumentu ** (ArgumentError)
W iex:
=> iex Erlang / OTP 23 [erts-11.1] [źródło] [64-bit] [smp: 12:12] [ds: 12: 12: 10] [async-thread: 1] [hipe] Interactive Elixir (1.9.4) - naciśnij Ctrl + C, aby wyjść (naciśnij h () ENTER, aby uzyskać pomoc) iex (1)> c "impl_bad.ex" == Błąd kompilacji w pliku impl_bad.ex == Błąd argumentu ** (ArgumentError) Błąd argumentu ** (ArgumentError)
Kod:
defmodule ImplBad zrobić
def run_addition_problems (aconfig) zrobić
do_addition_problems (aconfig)
koniec
koniec
Umieść ten 5-wierszowy kod w samym pliku.
Wiem, że metoda do_addition_problems () nie istnieje, ale spodziewałbym się niezdefiniowanego błędu z numerem linii.
Wyodrębniłem ten kod z pliku projektu, w którym istnieje do_addition_problems ().
Oczekiwałbym nieco więcej informacji od kompilatora. Musiałem przeprowadzić „wyszukiwanie binarne” z modułu około 1k LOC, aby wskazać ten problem.
Czy to problem z eliksirem 1.9.4?
Odpowiedzi
Jest to kwestia jednoczesnego używania Erlang/OTP 23 i Elixir 1.9.4 .
Elixir 1.9 jest starszy niż OTP 23 , ale elixir w pełni wykorzystuje OTP, więc opiera się na niektórych ostrzeżeniach / komunikatach pochodzących z kompilatora erlang podczas kompilacji.
To powiedziawszy, obniżenie wersji OTP do wersji, o której Elixir 1.9jest świadomy ( 21 byłoby w porządku, jak sądzę) lub uaktualnienie Elixiru do najnowszej 1.11.1rozwiązałoby problem, powodując fantazyjne
== 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