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:
parent
866ba3e365
commit
a8243e9aa2
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue