diff options
-rw-r--r-- | lib/Serialization/ASTReaderDecl.cpp | 2 | ||||
-rw-r--r-- | test/Modules/Inputs/templates-top.h | 11 |
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() {} +}; |