<div class="gmail_quote">On 15 March 2012 18:08, Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com" target="_blank">eli.friedman@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>On Mon, Mar 12, 2012 at 9:12 PM, Nick Lewycky <<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>> wrote:<br>
</div><div>> Author: nicholas<br>
> Date: Mon Mar 12 23:12:34 2012<br>
> New Revision: 152609<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=152609&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=152609&view=rev</a><br>
> Log:<br>
> It never makes sense to do a lookup into a LinkageSpecDecl, so assert that we<br>
> don't, and clean up the places that do it.<br>
><br>
> The change to ASTWriter is surprising, but the deleted code is a no-op as of<br>
> r152608.<br>
><br>
> Modified:<br>
>    cfe/trunk/lib/AST/DeclBase.cpp<br>
>    cfe/trunk/lib/Sema/SemaLookup.cpp<br>
>    cfe/trunk/lib/Serialization/ASTWriter.cpp<br>
><br>
> Modified: cfe/trunk/lib/AST/DeclBase.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclBase.cpp?rev=152609&r1=152608&r2=152609&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclBase.cpp?rev=152609&r1=152608&r2=152609&view=diff</a><br>



> ==============================================================================<br>
> --- cfe/trunk/lib/AST/DeclBase.cpp (original)<br>
> +++ cfe/trunk/lib/AST/DeclBase.cpp Mon Mar 12 23:12:34 2012<br>
> @@ -1084,6 +1084,9 @@<br>
><br>
>  DeclContext::lookup_result<br>
>  DeclContext::lookup(DeclarationName Name) {<br>
> +  assert(DeclKind != Decl::LinkageSpec &&<br>
> +         "Should not perform lookups into linkage specs!");<br>
<br>
</div>I'm seeing this assertion on g++.dg/parse/friend5.C from the gcc testsuite:<br>
<br>
extern "C" struct A<br>
{<br>
  friend void foo(int) {} // { dg-error "declaration" }<br>
  friend void foo() {} // { dg-error "foo" }<br>
};<br></blockquote><div><br></div><div>Thanks Eli! I've attached what I think is the right fix. Please review!</div><div><br></div><div>Also, this testcase was already broken in the sense that we accept invalid and weren't issuing an error on this construct.</div>

<div><br></div><div>Nick</div><div><br></div></div>