<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">For haddock-0.x, Cabal cpp&#39;s all the modules with -D__HADDOCK__ because<br>

the old haddock cannot parse all sorts of things.<br>
<br>
However for haddock-2.x it is important not to use -D__HADDOCK__ because<br>
the hacks that people added for haddock-0.x would make haddock-2.x fail.<br>
For example they&#39;d simply omit entire declarations. While haddock-0.x<br>
didn&#39;t really care and parsed and renamed in a sloppy way, haddoxk-2.x<br>
is basically ghc and so if the module does not compile then it also<br>
cannot be processed via haddock-2.x.<br>
</blockquote><div><br>That&#39;s quite a presumption there. I can certainly write a module that compiles and produces documentation for Haddock but that is different when compiled into binary form. Even without this particular problem, I can see that being potentially useful.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The proper solution is to make haddock not fail when it encounters TH<br>
code or whatever the original problem was. It can ignore it for now, it<br>
just has to not fail.<font color="#888888"><br></font></blockquote></div><br>That&#39;s certainly the ideal solution; however, it is not there right now.<br><br>I would be happy to work around it if I could, but I can&#39;t. As far as I can tell, I can&#39;t pass any flags to Haddock via the Cabal file. I would love to tell Hackage to run Haddock like so, &quot;cabal haddock --haddock-option=--optghc=-D__HADDOCK__&quot;, but I don&#39;t know how.<br>
<br>This adventure has exposed a major problem with Cabal that I have run into several times. It supports a limited set of external tools (e.g. Haddock, Alex, Happy, etc.), but it supports them in a limited way. Primarily, it is not possible to pass options to these tools (at least) through the configure script.<br>
<br>Also, regarding transparency with Hackage: is it possible to determine exactly which tools (e.g. Haddock version) are being used on the server? I would like to see a list on the website of the exact operations that will be applied to my package once uploaded.<br>
<br>Regards,<br>Sean<br>