<div dir="ltr">Hi Reid,<div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 4, 2014 at 9:07 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:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">
<div class="gmail_quote"><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></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>
</blockquote></div><br></div><div class="gmail_extra">I've been through this, and I believe there's a bug in that logic:</div><div class="gmail_extra"><a href="https://github.com/llvm-mirror/clang/blob/master/lib/Sema/SemaCXXScopeSpec.cpp#L703">https://github.com/llvm-mirror/clang/blob/master/lib/Sema/SemaCXXScopeSpec.cpp#L703</a></div>
<div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">  if (DC->isDependentContext() && DC->isFunctionOrMethod()) {</div><div class="gmail_extra">      SS.Extend(Context, &Identifier, IdentifierLoc, CCLoc);</div>
<div class="gmail_extra">      return false;</div><div class="gmail_extra">  }</div><div class="gmail_extra"><br></div><div class="gmail_extra">I think this should also check if it's in a class template. When we're in a function template it makes no sense to do lookup in dependent base classes, right?</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">When I short-circuit that conditional (I butchered it by adding && isa<CXXRecordDecl>(DC->getParent()), but that's probably wrong), I get a diagnostic as expected:</div>
<div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">incomplete.cpp:4:3: error: use of undeclared identifier 'UndefinedSymbol'</div><div class="gmail_extra">  UndefinedSymbol::bar(t);</div>
<div class="gmail_extra">  ^</div><div class="gmail_extra"><br></div><div class="gmail_extra">That must be good, right?</div><div class="gmail_extra"><br></div><div class="gmail_extra">- Kim</div></div></div></div>