forked from OSchip/llvm-project
Don't try to find a scope corresponding to the search DC for an unfound
friend declaration; this used to be important but is now just a waste of time plus an unreasonable assertion. Fixes PR6174. llvm-svn: 101112
This commit is contained in:
parent
d33749b4a9
commit
77e41c1cc6
|
@ -4930,14 +4930,6 @@ Sema::DeclPtrTy Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK,
|
|||
// class or function, the friend class or function is a member of
|
||||
// the innermost enclosing namespace.
|
||||
SearchDC = SearchDC->getEnclosingNamespaceContext();
|
||||
|
||||
// Look up through our scopes until we find one with an entity which
|
||||
// matches our declaration context.
|
||||
while (S->getEntity() &&
|
||||
((DeclContext *)S->getEntity())->getPrimaryContext() != SearchDC) {
|
||||
S = S->getParent();
|
||||
assert(S && "No enclosing scope matching the enclosing namespace.");
|
||||
}
|
||||
}
|
||||
|
||||
// In C++, look for a shadow friend decl.
|
||||
|
|
|
@ -192,3 +192,22 @@ namespace test4 {
|
|||
return a == b; // expected-note {{requested here}}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// PR6174
|
||||
namespace test5 {
|
||||
namespace ns {
|
||||
class A;
|
||||
}
|
||||
|
||||
class ns::A {
|
||||
private: int x;
|
||||
friend class B;
|
||||
};
|
||||
|
||||
namespace ns {
|
||||
class B {
|
||||
int test(A *p) { return p->x; }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue