Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overly loose typespecs #467

Open
cdegroot opened this issue Nov 17, 2022 · 0 comments
Open

Overly loose typespecs #467

cdegroot opened this issue Nov 17, 2022 · 0 comments

Comments

@cdegroot
Copy link

I was a bit surprised to hit a bug in our code - we accidentally put a map instead of a keyword list in a Request struct, and that blew up in our staging environment:

2022-11-17T21:57:36.282000+00:00 ip-192-168-0-108/fb9f6b2     (elixir 1.14.1) lib/keyword.ex:1078: Keyword.has_key?(%{"follow_redirect" => true, "max_body_length" => 10240, "max_redirect" => 3, "recv_timeout" => 5000, "timeout" => 5000}, :proxy)
2022-11-17T21:57:36.282000+00:00 ip-192-168-0-108/fb9f6b2     (httpoison 1.8.2) lib/httpoison/base.ex:763: HTTPoison.Base.build_hackney_proxy_options/1

The reason I was surprised is that I assumed that a widely used library like HTTPoison by now would have correct typespecs everywhere, so seeing bd14138 was, well, not what I expected.

Can we batten down the hatches? At the moment, you can feed anything you want to HTTPoison and Dialyzer will not mind; this is the sort of mistake that we have the tools to catch quickly and unless I'm missing something (there's not a lot of detail on that commit) there's really no reason to make everything just any(). I mean, it's probably better to just remove the typespecs at this point altogether...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant