<div dir="ltr">This is so incredibly helpful Reid, thank you.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 13, 2014 at 6:45 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Here's my poor, not for commit, attempt to do this.  It lets Clang accept sizeof without typename, but it crashes 72 existing tests.</div>
<div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 13, 2014 at 2:46 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Considering that MSVC rejects typename in places where it is required by the standard, I don't think issuing fixits is appropriate if we assume that users still want to build with MSVC.<div>

<br></div><div>
It's way too late to go back and reparse with a new typename token by the time we reach instantiation.  We've already done the first parse of the template, and now we're transforming AST nodes.</div><div><br>

</div>
<div>I think we can probably add a hack for sizeof if we observe during instantiation that the sizeof expr is really operating on a DeclRefExpr that names a type and not a decl.  Then we have to turn that DeclRefExpr into TypeSourceInfo, and I think we can rebuild a sizeof() expr that thinks it got a type.  I'm not sure how to take apart a DeclRefExpr and go looking for types with that name.</div>


<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div>On Thu, Feb 13, 2014 at 12:49 PM, JB Feldman <span dir="ltr"><<a href="mailto:jb.feldman@kyrus-tech.com" target="_blank">jb.feldman@kyrus-tech.com</a>></span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Is there a way to "modify the source" and reparse the text during the AST TreeTransform process?<div>


<br></div><div>I am trying to make a local change that would fix the bug:</div><div><a href="http://llvm.org/bugs/show_bug.cgi?id=18443" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=18443</a> </div>
<div><br></div><div>The idea would be to replace the nodes that are rendered as: </div><div><div>UnaryExprOrTypeTraitExpr 0x10c4f18 <col:41, col:55> 'unsigned int' sizeof</div><div>`-ParenExpr 0x10c4f00 <col:47, col:55> '<dependent type>' lvalue</div>



<div>  `-DependentScopeDeclRefExpr 0x10c4ed8 <col:48, col:51> '<dependent type>' lvalue</div></div><div>with </div><div>UnaryExprOrTypeTraitExpr 0xf64f28 <col:41, col:64> 'unsigned int' sizeof 'typename T::type'<br>



</div><div><br></div><div>simply by adding "typename" before the symbol, and then the parser would handle it correctly. and generate the correct UnaryExprOrTypeTraitExpr</div><div><br></div><div>Solutions I would accept include:</div>



<div>1) Change the source and reprocess the file (a la "Fixit"), but this has a high overhead for large files/projects</div><div>2) Ask the parser for the single Expr that would be generated from the new text</div>



<div>3) A way to look up what the existing typename would be manually and create the expr manually.</div><div>4) Other thing I'm too new to know about.</div><div><br></div><div>Thanks,<br>JB</div><div><br></div><div>


FYI: I'm trying to do this from the context of TransformUnaryExprOrTypeTraitExpr</div>








</div>
<br></div></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">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>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>