witchcrafters / type_class

(Semi-)principled type classes for Elixir
https://hex.pm/packages/type_class
MIT License
140 stars 16 forks source link

Espec tests: TypeClassSpec.MoreProps.Proto is not a behaviour #43

Open asmodehn opened 3 years ago

asmodehn commented 3 years ago

I ran the espec test on my setup (elixir 1.11), and, mostly as a way to slowly understand the code, I would like to address one of the warnings I got:

warning: module TypeClassSpec.MoreProps.Proto is not a behaviour (in module TypeClassSpec.MoreProps.Proto.Integer)
  spec/type_class_spec.exs:82: TypeClassSpec.MoreProps.Proto.Integer (module)

This refers to this line. I also have this warning quite a few times when building witchcraft.

The Adder class doesn't trigger this warning, so it seems to be because there is no where section in the definition of MoreProps class... or because extend is not working as expected ? I'm guessing it should declare the protocol for this class, from the where section of the extended module somehow ?

Thanks for any info about this.

QuinnWilton commented 2 years ago

Hi there! Thank you so much for the report. I dove into this a little bit today, and it actually looks like it's a result of some upstream behaviour in the Elixir compiler. I've opened up a fix on Elixir that you can track using the above pull request :)

cognivore commented 1 year ago

@QuinnWilton thanks for the patch (and tolerating anti-FP toxicity of Elixir developers). I'll incorporate it in my patchset for Goo (a FP-friendly Elixir fork). In the meantime I patched it by injecting a phony function in each defclass and definst :D