зеркало из https://github.com/microsoft/clang-1.git
Extend the tag-ambiguity hack I committed in r130810 for tag
definitions to also include tag declarations. Fixes PR8151. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131102 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
37b8c9ee7c
Коммит
93b6bceb0f
|
@ -6763,7 +6763,8 @@ Decl *Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK,
|
|||
// shouldn't be diagnosing.
|
||||
LookupName(Previous, S);
|
||||
|
||||
if (Previous.isAmbiguous() && TUK == TUK_Definition) {
|
||||
if (Previous.isAmbiguous() &&
|
||||
(TUK == TUK_Definition || TUK == TUK_Declaration)) {
|
||||
LookupResult::Filter F = Previous.makeFilter();
|
||||
while (F.hasNext()) {
|
||||
NamedDecl *ND = F.next();
|
||||
|
@ -6771,9 +6772,6 @@ Decl *Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK,
|
|||
F.erase();
|
||||
}
|
||||
F.done();
|
||||
|
||||
if (Previous.isAmbiguous())
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Note: there used to be some attempt at recovery here.
|
||||
|
|
|
@ -15,3 +15,14 @@ public:
|
|||
struct Point { };
|
||||
virtual bool testMethod (Test::Point& p) = 0;
|
||||
};
|
||||
|
||||
// PR8151
|
||||
namespace A { struct Face {}; }
|
||||
namespace B { struct Face {}; }
|
||||
using namespace A;
|
||||
using namespace B;
|
||||
|
||||
class C {
|
||||
struct Face;
|
||||
Face *mFaces;
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче