<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Aug 4, 2014 at 10:40 AM, Kim Gräsman <span dir="ltr"><<a href="mailto:kim.grasman@gmail.com" target="_blank">kim.grasman@gmail.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"><div class="gmail_extra"><div class="gmail_quote"><div class="">On Mon, Aug 4, 2014 at 7:34 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div><div class="">On Mon, Aug 4, 2014 at 10:26 AM, Kim Gräsman <span dir="ltr"><<a href="mailto:kim.grasman@gmail.com" target="_blank">kim.grasman@gmail.com</a>></span> wrote:<br>


</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class=""><div><br></div><div>We just (a few minutes ago, while experimenting with this) found a case where late-parsing a template whose body contains undefined symbols would generate an incomplete AST, e.g.</div>



<div><br></div><div><div>template<class T></div><div>void foo(const T& t) {</div><div>  UndefinedSymbol::bar(t);  // colon-colon</div><div>}</div></div><div><br></div></div><div><div class=""><div>$ clang-check.exe -ast-dump incomplete.cpp -- -fno-delayed-template-parsing</div>



<div>TranslationUnitDecl 0xebe7e0 <<invalid sloc>> <invalid sloc></div></div><div>[...]</div></div><div>This runs without error [...]</div><div class=""><div><br></div><div>I don't know if this is a general bug in the parser, but it'd be nice to always get a diagnostic here.</div>


</div></div></div></div></blockquote><div><br></div></div></div><div class=""><div>This is an -fms-compatibility hack, which is separate from delayed template parsing.  I'm surprised we don't have a -Wmicrosoft warning here, though.</div>

</div></div></div></div></blockquote><div><br></div><div>Thanks, that explains it. I'm about to take off on a road-trip, or I'd offer to add a warning. If you can give me a hint as to where to start I may be able to get to it when we get back. </div>
</div></div></div></blockquote><div><br></div><div>I don't know where exactly this is happening, but we typically build DependentDeclRefExprs when we have an undeclared id in a template in -fms-compatibility mode.  The name isn't actually dependent on template arguments, but it allows us to delay lookup until template instantiation time, which is basically what MSVC does.</div>
</div></div></div>