Das Elixir Simple-Modul erzeugt nur "Argument Error"
Ich habe ein einfaches, eigenständiges Modul, das Folgendes ergibt:
Elixier impl_bad.ex ** (ArgumentError) Argumentfehler
In iex:
=> iex Erlang / OTP 23 [erts-11.1] [Quelle] [64-Bit] [smp: 12: 12] [ds: 12: 12: 10] [asynchrone Threads: 1] [hipe] Interaktives Elixier (1.9.4) - Drücken Sie zum Beenden Strg + C (geben Sie h () ENTER ein, um Hilfe zu erhalten). iex (1)> c "impl_bad.ex" == Kompilierungsfehler in der Datei impl_bad.ex == ** (ArgumentError) Argumentfehler ** (ArgumentError) Argumentfehler
Der Code:
defmodule ImplBad do
def run_addition_problems (aconfig) do
do_addition_problems (aconfig)
Ende
Ende
Platzieren Sie diesen 5-Zeilen-Code in einer Datei für sich.
Ich weiß, dass do_addition_problems () nicht existiert, aber ich würde einen undefinierten Fehler mit einer Zeilennummer erwarten.
Ich habe diesen Code aus einer Projektdatei extrahiert, in der do_addition_problems () vorhanden ist.
Ich würde ein bisschen mehr Informationen vom Compiler erwarten. Ich musste eine "binäre Suche" von einem Modul über 1k LOC durchführen, um dieses Problem zu lokalisieren.
Ist das ein Problem mit Elixier 1.9.4?
Antworten
Dies ist ein Problem der Verwendung Erlang/OTP 23 und Elixir 1.9.4 gleichzeitig.
Elixir 1.9 ist älter als OTP 23 , aber Elixir nutzt OTP vollständig aus, sodass es sich beim Kompilieren auf einige Warnungen / Meldungen des erlang- Compilers stützt .
Das heißt, ein Downgrade von OTP auf die Version Elixir 1.9ist bekannt ( 21 wäre in Ordnung, glaube ich), oder ein Upgrade von Elixir auf die neueste Version 1.11.1würde das Problem beheben, das zu Phantasie führt
== 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