leaf
Opaque types and spec warning in dialyxir
These two warnings that I don’t really understand that dialyxir gives me:
Unknown type 'Elixir.Ecto.Query.DynamicExpr':t/0
The code is this:
@spec is_nil_dynamic(any(), any(), nil | keyword() | map()) :: Ecto.Query.DynamicExpr.t()
The second one is this
The call 'Elixir.Jason.Encoder.List':encode([any()],[]) does not have an opaque term of type 'Elixir.Jason.Encode':opts() as 2nd argument.
I read that jason.encode the opts is opaque but i don’t understand how can i fix it here.
Here is the code:
@encoder_library @options[:encoder_library]
record
|> Tuple.to_list()
|> @encoder_library.Encoder.List.encode([])
Any hints or suggestion please.
Thanks
Most Liked
jeremyjh
That is also an undocumented module, you are not meant to use it. If you want to encode a list, just feed it to Jason.encode.
NobbZ
I finally found that module, it’s a bare strict and has no type defined, also it’s moduledoc false, so it’s internal to the ecto codebase, you should not use that strict directly.
If though this code is generated somehow, you should give more context.
NobbZ
Either ignore it or don’t use a function that uses this type, as you can’t construct a value of that type legally from dialyzers point of view.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








