The problem is the compilation order. The relationship between mod A & B is being written in __before_compile__ for each module. mod A is using Module.put_attribute(B, :requires, A) in its __before_compile__ then B would do something like:
quote do for mod <- @requires, do: require mod end However B gets compiled before A and its @requires is always empty. On Tuesday, February 28, 2017 at 3:59:09 AM UTC-5, José Valim wrote: > > Actually, if you invoke the other module explicitly, it should also be > enough to list it as a dependency and for Elixir/Mix to track it. Unless > you are somehow generating those module names dynamically. Here is a good > article on the topic: > http://milhouseonsoftware.com/2016/08/11/understanding-elixir-recompilation/ > > > > *José Valim* > www.plataformatec.com.br > Skype: jv.ptec > Founder and Director of R&D > > On Tue, Feb 28, 2017 at 9:57 AM, José Valim <jose....@plataformatec.com.br > <javascript:>> wrote: > >> "require OtherModule" should do it. If not, it is a bug in Mix or Elixir, >> so please provide a mechanism to reproduce it so we can fix it. :) >> >> >> >> *José Valim* >> www.plataformatec.com.br >> Skype: jv.ptec >> Founder and Director of R&D >> >> On Tue, Feb 28, 2017 at 9:55 AM, Brian Cardarella <br...@dockyard.com >> <javascript:>> wrote: >> >>> I am doing some meta programming that has one module depending upon the >>> state of another. However it isn't being picked up by the compiler that >>> these two modules are related. And when the parent changes the child should >>> be marked for recompilation. It would be really nice if we had a simple >>> module attribute like: `@dependency_of` that took a list of modules. This >>> could be incorporated into the manifest write out for determining >>> dependencies. I assume at that point the compiler could work as normal. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "elixir-lang-core" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to elixir-lang-co...@googlegroups.com <javascript:>. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/elixir-lang-core/947a0dc2-20d0-4c45-8d45-eaaec3e60861%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/elixir-lang-core/947a0dc2-20d0-4c45-8d45-eaaec3e60861%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/6036391b-af14-4594-ae1c-c37b8aa2826a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.