The Redeclarable part of named decls is read before their name.

Lookup can nevertheless find them due to the serialized lookup table.
For instance when reading a template decl's templatedDecl, it will search for existing decls that it could be a redeclaration of, and find the half-read template decl.
Thus there is no point in asserting the names of decls.

llvm-svn: 164932
This commit is contained in:
Axel Naumann 2012-10-01 09:51:27 +00:00
parent 866ba3e365
commit a8243e9aa2
2 changed files with 11 additions and 7 deletions

View File

@ -4950,8 +4950,10 @@ namespace {
continue;
if (ND->getDeclName() != This->Name) {
assert(!This->Name.getCXXNameType().isNull() &&
"Name mismatch without a type");
// A name might be null because the decl's redeclarable part is
// currently read before reading its name. The lookup is triggered by
// building that decl (likely indirectly), and so it is later in the
// sense of "already existing" and can be ignored here.
continue;
}

View File

@ -88,12 +88,14 @@ template<> class List<bool> {
public:
void push_back(int);
};
namespace N {
template<typename T> class Set {
public:
void insert(T);
};
template<typename T> class Set;
}
namespace N {
template<typename T> class Set {
public:
void insert(T);
};
}
#endif