On Sun, Jul 28, 2013 at 11:31 AM, Will Wilson <span dir="ltr"><<a href="mailto:will@indefiant.com" target="_blank">will@indefiant.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hi All,
<div><br></div><div>I've attached a preliminary patch for some feedback. This is my first foray into the serialization code so I've taken the simplest approach I could for now.</div><div><br></div><div>I've also moved LateParsedTemplateMap from the Parser to Sema. I did try and avoid this but plumbing the necessary calls via Sema to the Parser proved messy, and after considering the options I decided that moving the state to Sema was the lesser of the two evils.</div>

<div><br></div><div>Some may consider it a layering violation but as Sema effectively needs the data to finish its job and the state is nothing more than a couple of Decl pointers and a sequence of Tokens I thought it reasonable - after all Sema already deals with Tokens.</div>
</div></blockquote><div><br></div><div>I'm not a big fan of the layering here, but I agree that it's preferable to having Serialization know about the Parser.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div>As I said the serialization approach I've taken is about as simplistic as possible. Lazy lookup/deserialization should really be performed on each FunctionDecl as they're instantiated rather than as a job lot for the whole TU (as currently implemented) - but I was hoping for some feedback before attempting that.</div>
</div></blockquote><div><br></div><div>That was the only substantial comment I had on the patch. Please also fix up the formatting (no line break before open brace, space before "&" not after -- clang-format-diff can fix these for you) and inconsistent naming (WriteLateParsedTemplates versus ReadLateParsedTemplateFunctions versus LateParsedTemplatedFunction).</div>
</div>