aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Serialization/ASTReaderDecl.cpp2
-rw-r--r--test/Modules/Inputs/templates-top.h11
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp
index e770c06519..4f2da6bc51 100644
--- a/lib/Serialization/ASTReaderDecl.cpp
+++ b/lib/Serialization/ASTReaderDecl.cpp
@@ -1775,7 +1775,7 @@ ASTDeclReader::FindExistingResult::~FindExistingResult() {
if (!AddResult || Existing)
return;
- DeclContext *DC = New->getDeclContext()->getRedeclContext();
+ DeclContext *DC = New->getLexicalDeclContext();
if (DC->isTranslationUnit() && Reader.SemaObj) {
if (Reader.SemaObj->IdResolver.tryAddTopLevelDecl(New, New->getDeclName()))
Reader.RedeclsAddedToAST.insert(New);
diff --git a/test/Modules/Inputs/templates-top.h b/test/Modules/Inputs/templates-top.h
index 80ecf23ea4..5985ee8820 100644
--- a/test/Modules/Inputs/templates-top.h
+++ b/test/Modules/Inputs/templates-top.h
@@ -4,3 +4,14 @@ template<typename T> class List {
public:
void push_back(T);
};
+
+namespace A {
+ class Y {
+ template <typename T> friend class WhereAmI;
+ };
+}
+
+template <typename T> class A::WhereAmI {
+public:
+ static void func() {}
+};