<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 13 January 2013 16:02, Johannes Pfau <span dir="ltr"><<a href="mailto:nospam@example.com" target="_blank">nospam@example.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Am Sat, 12 Jan 2013 11:57:10 +0100<br>
schrieb Johannes Pfau <<a href="mailto:nospam@example.com">nospam@example.com</a>>:<br>
<div class="im"><br>
> A template's toObjFile does nothing, but all my naive attempts to call<br>
> e.g.<br>
> declaration->isTemplateDeclaration()>onemember->isDeclaration()->toObjFile(false)<br>
> fail with a strange error.<br>
<br>
</div>OK, of course it can't work. toObjFile has to be called on the<br>
TemplateInstance, not on the declaration...<br>
<br>
All TemplateInstances are currently emitted by Module::genobjfile which<br>
loops through all Dsymbols in the module. Therefore the scope for<br>
functions in template instances is always the module scope which is<br>
incorrect.<br>
<br>
A simple approach to fix this is delaying emitting those templates and<br>
emitting functions first, then change function output to emit template<br>
instances.<br>
Here's this simple approach: <a href="https://gist.github.com/4524721" target="_blank">https://gist.github.com/4524721</a></blockquote><div><br><pre><span class=""> //What should multiobj be?</span></pre> <br><br></div>
<div>multiobj is ignored by gdc, but just for consistency reasons, just go with false.<br><br><br></div><div>Also, do you find that templates must go after *all* functions have been processed, or is it fine if you just add them to toSymbol()->deferredNestedFuncs for the function they are associated with to be processed immediately afterwards.<br>
<br></div><div>Regards,<br>Iain<br></div></div></div></div>