I’ve got a branch in Absinthe that conditionally uses the
:persisten_term module if it’s available. Unfortunately this is causing me issues with dialyzer, for reasons I can’t quite sort out. I’d like to do one of two things:
- Figure out why dialyzer things
:persistent_term.put/2 is unavailable on OTP 21.2. This would be the best option.
- If that fails, mark the function as
nowarn. I’ve tried this, but I can’t seem to get the invocation correct.
Failing Travis job: https://travis-ci.org/github/absinthe-graphql/absinthe/jobs/668979055?utm_medium=notification&utm_source=github_status
Line where I try to tell dialyzer to ignore stuff: https://github.com/absinthe-graphql/absinthe/pull/895/files#diff-84866da0b679965d8a1826c4dc1665e6R63
Sometime in the past, for reasons I don’t recall (but I think i was heading down the same path as you) I added the following to my
.dialyzer_ignore_warnings fie which seemed to quiet things down. Hope it helps make some progress.
:0: Unknown function persistent_term:get/2
:0: Unknown function persistent_term:put/2
I think this may also have been because of the
@dialyzer issue you are having - i think I had the same but can’t fully recall.
Hi @kip thanks for the suggestion. I added a file with those lines to that file and at first it didn’t work, but then switched it to using the Elixir formatted documented by
dialyxir. This worked!
Dialyxir format: https://github.com/jeremyjh/dialyxir#elixir-term-format
I’d still like to sort out why dialyzer doesn’t think persistent_term.put exists for that version of Erlang though.
We’ve now hit this issue in OpenTelemetry https://github.com/open-telemetry/opentelemetry-erlang-api/pull/82
But what is extra weird is that dialyzer has been working fine, no warnings about
persistent_term:put/2. It is only now that Elixir’s dialyxer task has been added that its use of dialyzer warns about the function…