-Implement proper name lookup for namespaces.
-identifierResolver exposes an iterator interface to get all decls through the scope chain.
-The semantic staff (checking IdentifierNamespace and Doug's checking for shadowed tags were moved out of IdentifierResolver and back into Sema. IdentifierResolver just gives an iterator for all reachable decls of an identifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50923 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Sema/cxx-namespace.cpp b/test/Sema/cxx-namespace.cpp
index 05b791c..df0fa25 100644
--- a/test/Sema/cxx-namespace.cpp
+++ b/test/Sema/cxx-namespace.cpp
@@ -8,8 +8,46 @@
 int A; // expected-error {{error: redefinition of 'A' as different kind of symbol}}
 class A; // expected-error {{error: redefinition of 'A' as different kind of symbol}}
 
-class B; // expected-error {{error: previous definition is here}}
+class B {}; // expected-error {{error: previous definition is here}}
 namespace B {} // expected-error {{error: redefinition of 'B' as different kind of symbol}}
 
 void C(); // expected-error {{error: previous definition is here}}
 namespace C {} // expected-error {{error: redefinition of 'C' as different kind of symbol}}
+
+namespace S1 {
+  int x;
+
+  namespace S2 {
+
+    namespace S3 {
+      B x;
+    }
+  }
+}
+
+namespace S1 {
+  void f() {
+    x = 0;
+  }
+
+  namespace S2 {
+    
+    namespace S3 {
+      void f() {
+        x = 0; // expected-error {{error: incompatible type assigning 'int', expected 'class B'}}
+      }
+    }
+
+    int y;
+  }
+}
+
+namespace S1 {
+  namespace S2 {
+    namespace S3 {
+      void f3() {
+        y = 0;
+      }
+    }
+  }
+}