Index: test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp
===================================================================
--- test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp	(revision 154288)
+++ test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp	(working copy)
@@ -33,7 +33,7 @@
 template<> void N0::f0(int) { } // okay
 
 namespace N1 {
-  template<> void N0::f0(long) { } // expected-error{{not in a namespace enclosing}}
+  template<> void N0::f0(long) { } // expected-error{{does not enclose namespace}}
 }
 
 template<> void N0::f0(double) { }
@@ -129,7 +129,7 @@
 template<> float N0::X0<float>::member = 3.14f;
 
 namespace N1 {
-  template<> double N0::X0<double>::member = 3.14; // expected-error{{not in a namespace enclosing}}
+  template<> double N0::X0<double>::member = 3.14; // expected-error{{does not enclose namespace}}
 }
 
 //    -- member class of a class template
@@ -227,7 +227,7 @@
 
 namespace N1 {
   template<> template<>
-  void N0::X0<void*>::ft1(void *, long) { } // expected-error{{enclosing}}
+  void N0::X0<void*>::ft1(void *, long) { } // expected-error{{does not enclose namespace}}
 }
 
 
Index: test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
===================================================================
--- test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp	(revision 154288)
+++ test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp	(working copy)
@@ -33,7 +33,7 @@
 template<> void N0::f0(int) { } // okay
 
 namespace N1 {
-  template<> void N0::f0(long) { } // expected-error{{not in a namespace enclosing}}
+  template<> void N0::f0(long) { } // expected-error{{does not enclose namespace}}
 }
 
 template<> void N0::f0(double); // expected-warning{{C++11 extension}}
@@ -130,7 +130,7 @@
 template<> float N0::X0<float>::member = 3.14f;
 
 namespace N1 {
-  template<> double N0::X0<double>::member = 3.14; // expected-error{{not in a namespace enclosing}}
+  template<> double N0::X0<double>::member = 3.14; // expected-error{{does not enclose namespace}}
 }
 
 //    -- member class of a class template
@@ -228,7 +228,7 @@
 
 namespace N1 {
   template<> template<>
-  void N0::X0<void*>::ft1(void *, long) { } // expected-error{{enclosing}}
+  void N0::X0<void*>::ft1(void *, long) { } // expected-error{{does not enclose namespace}}
 }
Index: test/SemaCXX/qual-id-test.cpp
===================================================================
--- test/SemaCXX/qual-id-test.cpp	(revision 154288)
+++ test/SemaCXX/qual-id-test.cpp	(working copy)
@@ -144,6 +144,6 @@
   typedef int foo;
   namespace Inner {
     typedef int PR6645::foo; // expected-error{{typedef declarator cannot be qualified}} \
-    // expected-error{{definition or redeclaration of 'foo' not in a namespace enclosing 'PR6645'}}
+    // expected-error{{cannot define or redeclare 'foo' here, because namespace 'Inner' does not enclose namespace 'PR6645'}}
   }
 }
Index: test/SemaCXX/nested-name-spec.cpp
===================================================================
--- test/SemaCXX/nested-name-spec.cpp	(revision 154288)
+++ test/SemaCXX/nested-name-spec.cpp	(working copy)
@@ -45,7 +45,7 @@
 }
 
 namespace B {
-  void ::A::Af() {} // expected-error {{definition or redeclaration of 'Af' not in a namespace enclosing 'A'}}
+  void ::A::Af() {} // expected-error {{cannot define or redeclare 'Af' here, because namespace 'B' does not enclose namespace 'A'}}
 }
 
 void f1() {
Index: include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- include/clang/Basic/DiagnosticSemaKinds.td	(revision 154288)
+++ include/clang/Basic/DiagnosticSemaKinds.td	(working copy)
@@ -4288,8 +4283,8 @@
 def err_expected_class_or_namespace : Error<"expected a class or namespace">;
 def err_expected_class : Error<"%0 is not a class%select{ or namespace|, "
   "namespace, or scoped enumeration}1">;
-def err_invalid_declarator_scope : Error<
-  "definition or redeclaration of %0 not in a namespace enclosing %1">;
+def err_invalid_declarator_scope : Error<"cannot define or redeclare %0 here, "
+  "because namespace %1 does not enclose namespace %2">;
 def err_invalid_declarator_global_scope : Error<
   "definition or redeclaration of %0 cannot name the global scope">;
 def err_invalid_declarator_in_function : Error<
Index: lib/Sema/SemaDecl.cpp
===================================================================
--- lib/Sema/SemaDecl.cpp	(revision 154288)
+++ lib/Sema/SemaDecl.cpp	(working copy)
@@ -3307,7 +3307,7 @@
         << Name << SS.getRange();
     else
       Diag(Loc, diag::err_invalid_declarator_scope)
-      << Name << cast<NamedDecl>(DC) << SS.getRange();
+      << Name << cast<NamedDecl>(Cur) << cast<NamedDecl>(DC) << SS.getRange();
     
     return true;
   }
