Don't lose track of previous-declarations when instantiating a class template.
Fixes PR8001.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118454 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaTemplate/class-template-decl.cpp b/test/SemaTemplate/class-template-decl.cpp
index 1be1bc0..e772212 100644
--- a/test/SemaTemplate/class-template-decl.cpp
+++ b/test/SemaTemplate/class-template-decl.cpp
@@ -56,3 +56,21 @@
 }
 
 template<typename T> class M::C3 { }; // expected-error{{out-of-line definition of 'C3' does not match any declaration in namespace 'M'}}
+
+namespace PR8001 {
+  template<typename T1>
+  struct Foo {
+    template<typename T2> class Bar;
+    typedef Bar<T1> Baz;
+
+   template<typename T2>
+   struct Bar {
+     Bar() {}
+   };
+  };
+
+  void pr8001() {
+    Foo<int>::Baz x;
+    Foo<int>::Bar<int> y(x);
+  }
+}