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:
Douglas Gregor 2011-05-09 21:46:33 +00:00
Родитель 37b8c9ee7c
Коммит 93b6bceb0f
2 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -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;
};