<br><br><div class="gmail_quote">On Tue, Dec 30, 2008 at 7:27 PM, Andrew Sutton <span dir="ltr"><<a href="mailto:andrew.n.sutton@gmail.com">andrew.n.sutton@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><div class="gmail_quote"><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>
Building a patch against svn shouldn't be too much trouble. I'm going try to finish off the template-template param basics with ast-print support (hopefully) without introducing any regressions before submitting.<br>


<br>
</blockquote>
<br></div>
Okay.<div></div></blockquote></div><div><br>It turns out to be impossible to ast-print template template parameters without handling template declarations. This seems so obvious in retrospect... So I'm working on AST building for class templates. It's kind of working, but I can't seem to get the DeclPrinter to see top-level template declarations. Probably some kind of weird name conflict because I'm forcing the TemplateDecl to take the same name as its underlying ScopedDecl.<br>

<br>Quick question though. You started building support for depth/position stuff for template parameters, but the values aren't handled in Sema. Are you envisioning the depth/position as properties of template parameters or will they be dealt with elsewhere?<br>

<br></div></div><div><div></div><div class="Wj3C7c">Andrew Sutton<br><a href="mailto:andrew.n.sutton@gmail.com" target="_blank">andrew.n.sutton@gmail.com</a><br>
</div></div></blockquote></div><br>Here's my incremental patch for template support to date as diff'd against svn. Here's what I've done:<br>- Moved all template-related decls into new files DeclTemplate.h and DeclTemplate.cpp<br>

- Stubbed out the basic TemplateDecl hierarchy with derivatives
ClassTemplateDecl, and FunctionTemplateDecl and integrated this into
the isa/dyncast system (also added names to the getDeclKindName)<br>-
Modified the TemplateParameter classes to include Depth/Position info
as properties, and stubbed out serialization support for all of them.<br>
- Improved Sema support for building template template parameters.<br>- Create ClassTemplateDecls in ActOnTag when there are template parameters<br>- Blocked out support for printing template information in DeclPrinter<br>

<br>I never actually got -ast-print to print top-level template
declarations. For some reason, top-level template declarations seem to
a) evaporate from the list of top-level declarations or b) aren't
actually being added to that list.<br><br>There's also an interesting case in ActOnTag when a previous declaration happens to be a class template. My solution is to simply make PrevDecl reference the TemplatedDecl and temporarily punt on determining if a) the previous is a forward declaration, or if the current tag is a full or partial specialization. That logic probably needs to show up when we're creating the AST nodes.<br>

<br>There are almost certainly some memory leaks and issues with ownership.<br><br>Andrew Sutton<br><a href="mailto:andrew.n.sutton@gmail.com">andrew.n.sutton@gmail.com</a><br>