From a1c4f7c833093f87d5187c4449a3d4534cfa40a4 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 13 Apr 2012 04:07:40 +0000 Subject: [PATCH] PR12500: Improve the wording of the diagnostic for a redefinition of a name in the wrong namespace scope. Patch by Jonathan Sauer! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154656 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/DiagnosticSemaKinds.td | 4 ++-- lib/Sema/SemaDecl.cpp | 2 +- test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp | 6 +++--- test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp | 6 +++--- test/SemaCXX/nested-name-spec.cpp | 2 +- test/SemaCXX/qual-id-test.cpp | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 813ef19d87..e553740ab1 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -4296,8 +4296,8 @@ def err_typecheck_deleted_function : Error< 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< diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index f54f0fd942..8b314b524f 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -3307,7 +3307,7 @@ bool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, << Name << SS.getRange(); else Diag(Loc, diag::err_invalid_declarator_scope) - << Name << cast(DC) << SS.getRange(); + << Name << cast(Cur) << cast(DC) << SS.getRange(); return true; } diff --git a/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp b/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp index acfbb46447..b0a19fb93a 100644 --- a/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp +++ b/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp @@ -33,7 +33,7 @@ namespace N0 { 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<> int N0::X0::member; template<> float N0::X0::member = 3.14f; namespace N1 { - template<> double N0::X0::member = 3.14; // expected-error{{not in a namespace enclosing}} + template<> double N0::X0::member = 3.14; // expected-error{{does not enclose namespace}} } // -- member class of a class template @@ -227,7 +227,7 @@ void N0::X0::ft1(void *, float) { } namespace N1 { template<> template<> - void N0::X0::ft1(void *, long) { } // expected-error{{enclosing}} + void N0::X0::ft1(void *, long) { } // expected-error{{does not enclose namespace}} } diff --git a/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp b/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp index dff7cd5b40..c972bf7c7d 100644 --- a/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp +++ b/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp @@ -33,7 +33,7 @@ namespace N0 { 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<> int N0::X0::member; // expected-warning{{C++11 extension}} template<> float N0::X0::member = 3.14f; namespace N1 { - template<> double N0::X0::member = 3.14; // expected-error{{not in a namespace enclosing}} + template<> double N0::X0::member = 3.14; // expected-error{{does not enclose namespace}} } // -- member class of a class template @@ -228,7 +228,7 @@ void N0::X0::ft1(void *, float) { } // expected-warning{{function templat namespace N1 { template<> template<> - void N0::X0::ft1(void *, long) { } // expected-error{{enclosing}} + void N0::X0::ft1(void *, long) { } // expected-error{{does not enclose namespace}} } diff --git a/test/SemaCXX/nested-name-spec.cpp b/test/SemaCXX/nested-name-spec.cpp index a60b115695..b317634844 100644 --- a/test/SemaCXX/nested-name-spec.cpp +++ b/test/SemaCXX/nested-name-spec.cpp @@ -45,7 +45,7 @@ void C2::m() { } 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() { diff --git a/test/SemaCXX/qual-id-test.cpp b/test/SemaCXX/qual-id-test.cpp index e43e6887c4..9994d75cac 100644 --- a/test/SemaCXX/qual-id-test.cpp +++ b/test/SemaCXX/qual-id-test.cpp @@ -144,6 +144,6 @@ namespace PR6645 { 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'}} } } -- 2.40.0