<div dir="ltr"><div>My understanding is that the asserts were added to template instantiation because previously it transformed types without transforming location information. You ended up with QualTypes instead of TypeSourceInfo*'s or TypeLocs, which lost a lot of information. I think those asserts were added to make sure that the rest of the compiler continue to forward proper slocs. I don't think they are truly needed for correctness.<br>
</div><div><br></div><div>I think Doug was responsible for those assertions. Maybe he has time now to answer questions, but maybe not. :)</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 15, 2014 at 9:38 AM, Keno Fischer <span dir="ltr"><<a href="mailto:kfischer@college.harvard.edu" target="_blank">kfischer@college.harvard.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I've recently been generating a lot of clang ASTs programmatically and<br>
I am wondering when SourceLocation's are supposed to be required in<br>
the AST for clang to compile it correctly and when they are not. From<br>
my experience, most of the time it works fine to just make it an<br>
invalid clang::SourceLocation, but some of the time (three or four<br>
instances I know of), it does not (e.g. template instantiations throw<br>
assertion failures when the source location is invalid). So I'm<br>
wondering if there is any rational on when a valid (even if<br>
nonsensical - that always works fine) source location is required and<br>
when not, so I know which are bugs and need fixing (which I'm happy to<br>
do) and which are expected and I should simply work around.<br>
<br>
Thanks,<br>
Keno<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>