During the upgrade of one of my libraries to 1.17.0
, I got the following error message led the compilation to failing.
== Compilation error in file lib/md/parser/engine.ex ==
** (MatchError) no match of right hand side value: false
(elixir 1.17.0-dev) src/elixir_erl_var.erl:16: :elixir_erl_var.translate/4
(stdlib 6.0) lists.erl:2343: :lists.mapfoldl_1/3
(stdlib 6.0) lists.erl:2344: :lists.mapfoldl_1/3
(stdlib 6.0) lists.erl:2343: :lists.mapfoldl_1/3
(stdlib 6.0) lists.erl:2344: :lists.mapfoldl_1/3
The line above in src/elixir_erl_var.erl:16
belongs to one of :elixir_erl_var.translate/4
clauses here
{version, Version} = lists:keyfind(version, 1, Meta),
I would kindly appreciate any hint of under what circumstances Meta
requires this :version
key. The quick dig did not shed any light and I am a bit lost.
Macro.var/2
does not generate any version
in meta. The only suspicious occurrence in elixir code itself would be in protocol.ex:664
as
x = {:x, [line: line, version: -1], __MODULE__}
But amending meta manually to include version
in the only place I generate vars did not help.
Thanks!