summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp6
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-left.h12
2 files changed, 11 insertions, 7 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 17296685c4e..639ef93fb6b 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -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;
}
diff --git a/clang/test/Modules/Inputs/redecl-merge-left.h b/clang/test/Modules/Inputs/redecl-merge-left.h
index a6ea6024c85..1f5da4f2e27 100644
--- a/clang/test/Modules/Inputs/redecl-merge-left.h
+++ b/clang/test/Modules/Inputs/redecl-merge-left.h
@@ -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
OpenPOWER on IntegriCloud