Oh, sorry. Import will complain when you don’t call the “bare” imported functions (without module name). Calling those same functions fully qualified (with module name) does not count as using the import.
Michał. > On 16 Jul 2016, at 22:34, Brian Cardarella <[email protected]> wrote: > > I'll take it into consideration. > > I'm still curious about the original question. Assuming refactoring away from > macros is not an option, is there a way to eliminate the warning? > > On Saturday, July 16, 2016 at 4:12:53 PM UTC-4, Michał Muskała wrote: > If I want a different encoding I could just pass a different builder > function. There’s nothing stopping you from doing: > > MyApp.Post > |> Inquisitor.build_query(params, builder: &post_builder/2) > > MyApp.Comment > |> Inquisitor.build_query(params, builder: &comment_builder/2) > > But since those are just functions, you can hide them behind another one: > > def post_query(params) do > MyApp.Post > |> Inquisitor.build_query(params, builder: &post_builder/2) > end > > This effectively gives you the same interface as the macro approach, but is > explicit and without any magic at any point. > Even better I can define two different functions for searching posts for > different actions: > > def current_post_query(params) do > MyApp.Post > |> Inquisitor.build_query(params, builder: &post_current_builder/2) > end > > This is not possible with the macro approach, that implicitly couples model > name to the function name behind the scenes. > > I’m sorry, if I appear rude. This is definitely not my intention. I only > wanted to show that functions are enough in many, many cases and macros > just obscure things. I am big believer in making libraries use functions > first and foremost and later only sprinkle some macros where (and if) > necessary to hide annoying boilerplate. > > Michał. > >> On 16 Jul 2016, at 21:47, Brian Cardarella <br...@ <>dockyard.com >> <http://dockyard.com/>> wrote: >> >> The use case for macros is for model-specific functions. You don't want the >> same matched functions applying to all models >> >> On Saturday, July 16, 2016 at 1:44:11 AM UTC-4, Michał Muskała wrote: >> To be honest, I have a really hard time to understand why this library is >> using macros at all. >> All of this can be achieved with just functions, in a much clearer way >> (although that’s obviously just my opinion). >> Using functions also allows you to have multiple different builders, should >> you need them, and completely decouples the query from the module. >> >> I’ve created a simple gist to showcase a possible, macro-less, solution: >> https://gist.github.com/michalmuskala/ade699c25caccb51760a4c0c050b5707 >> <https://gist.github.com/michalmuskala/ade699c25caccb51760a4c0c050b5707> >> >> Michał. >> >>> On 16 Jul 2016, at 02:12, Brian Cardarella <br...@ <>dockyard.com >>> <http://dockyard.com/>> wrote: >>> >>> In one of my libraries this line throws a warning: >>> >>> https://github.com/DockYard/inquisitor/blob/master/test/inquisitor_test.exs#L54 >>> >>> <https://github.com/DockYard/inquisitor/blob/master/test/inquisitor_test.exs#L54> >>> >>> "unused import Ecto.Query" >>> >>> because the `use` module above will @before_compile the following: >>> >>> https://github.com/DockYard/inquisitor/blob/master/lib/inquisitor.ex#L83 >>> <https://github.com/DockYard/inquisitor/blob/master/lib/inquisitor.ex#L83> >>> >>> so technically the Whitelist module has calls to Ecto.Query but for >>> whatever reason Elixir doesn't think so. >>> >>> Yes, this is a test case but I'm curious if there are ways to clean this up? >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "elixir-lang-talk" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to elixir-lang-ta...@ <>googlegroups.com <http://googlegroups.com/>. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/elixir-lang-talk/aa3b0d82-9a47-4296-ba64-47ca5f25271c%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/elixir-lang-talk/aa3b0d82-9a47-4296-ba64-47ca5f25271c%40googlegroups.com?utm_medium=email&utm_source=footer>. >>> For more options, visit https://groups.google.com/d/optout >>> <https://groups.google.com/d/optout>. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "elixir-lang-talk" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to elixir-lang-ta...@ <>googlegroups.com <http://googlegroups.com/>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-talk/911d9bfc-f93a-4fa3-a96b-337235a2e83e%40googlegroups.com >> >> <https://groups.google.com/d/msgid/elixir-lang-talk/911d9bfc-f93a-4fa3-a96b-337235a2e83e%40googlegroups.com?utm_medium=email&utm_source=footer>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-talk/5729f878-b72b-4528-8dd4-6a92d3bc9b39%40googlegroups.com > > <https://groups.google.com/d/msgid/elixir-lang-talk/5729f878-b72b-4528-8dd4-6a92d3bc9b39%40googlegroups.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "elixir-lang-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-talk/8B8149B6-59C1-4152-9CF4-60DC9EDD9664%40muskala.eu. For more options, visit https://groups.google.com/d/optout.
signature.asc
Description: Message signed with OpenPGP using GPGMail
