I’m still getting "a previous clause at line 1 always matches" warning below, even though I long ago removed the .ex file that was re-defining the problematic DefineMessage module from exprotobuf:
> mix deps.compile
> mix compile
==> my_app
Compiling 13 files (.ex)
warning: this clause cannot match because a previous clause at line 1 always matches
lib/exprotobuf/define_message.ex:1
This was indeed a valid warning for this project, as it used to contain a same-named module DefineMessage. The module was in a file under config/, and on deployment it would overwrite exprotobuf's own module: we’d literally do
Thanks for the suggestion. Alas, neither mix clean nor mix clean --deps worked.
mix clean --deps seems to delete _build/$MIX_ENV. I even tried rm -rf deps/ _build/ before in vain. Open to further suggestions, I need to get rid of this last warning.
PS. Recloned the project, ran rm -rf .git _build deps and recompiled. Still, the warning persists.
Maybe unrelated, but even with elixir set to 1.10.4 via asdf…
$ asdf install
elixir 1.10.4-otp-23 is already installed
erlang 23.1 is already installed
Maybe you’ve installed something as a global archive? Also something appears to be incorrect in your asdf setup if the incorrect version is being used. Does asdf current also show 1.10.4? What does which -a elixir show?
Thanks for the help Jason. I’ve looked further into both areas you mention, global archives and asdf.
Global archive
I think these are the only global archives.
$ ls ~/.mix/archives
hex-0.20.1 hex.ez phoenix_new-1.1.2.ez phx_new-1.4.10
asdf v0.8.0
asdf current looks ok.
$ asdf current
elixir 1.10.4-otp-23 ~/my_app/.tool-versions
erlang 23.1 ~/my_app/.tool-versions
List of all elixir executables ok as well.
$ which -a elixir
~/.asdf/shims/elixir
/usr/local/bin/elixir
And the content of the above shim.
#!/usr/bin/env bash
# asdf-plugin: elixir
exec /usr/local/opt/asdf/bin/asdf exec "elixir" "$@" # Running this with "--version" arg does return 1.11.2 though