<div class="gmail_quote">On Tue, Jun 18, 2013 at 6:01 AM, Steven Schveighoffer <span dir="ltr"><<a href="mailto:schveiguy@yahoo.com" target="_blank">schveiguy@yahoo.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Mon, 17 Jun 2013 21:19:57 -0400, Timothee Cour <<a href="mailto:thelastmammoth@gmail.com" target="_blank">thelastmammoth@gmail.com</a>> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I understand your point, however I argued above that we should run a test<br>
at compile time to detect cycles. It won't catch all cycles (because of<br>
certain di files), but it will catch most of them (at least all of the ones<br>
not involving di files). This would be especially handy for people using<br>
rdmd.<br>
At runtime, we will also run the test to catch all cases.<br>
</blockquote>
<br></div>
rdmd could, as an extra step, generate a program that simply exits with 0, to check all cycles.  Then run that as part of compilation step.<br>
<br>
There isn't a whole lot of difference between checking at compile time and checking at runtime before main starts.<br>
<br>
</blockquote></div><br><div>there is: when the binary is created but meant to be run at a later time. Eg: building a system that requires a set of binaries to be created.</div><div><br></div><div>An acceptable solution would be to do the test upon calling rdmd (it should work with --build-only flag).</div>
<div><br></div><div>Furthermore, I think this could be made to work with dmd itself (even with di files) by having a data in the object files indicating the module dependencies, so that dmd will have all the info to do the test at CT. Eg:</div>
<div>dmd -c a.d -Hfa.di</div><div>dmd main.d a.di -ofmain</div><div>=> should be able to detect cycles.</div><div><br></div>