summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-04-13 04:07:40 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-04-13 04:07:40 +0000
commit822698412b63ad76242a4a3db6403212b56c9b23 (patch)
tree31febf1aebe112be667208134a275385a6fa5cb7
parente83c731cad3009ba20d0d0d990789ab5de38d192 (diff)
downloadbcm5719-llvm-822698412b63ad76242a4a3db6403212b56c9b23.tar.gz
bcm5719-llvm-822698412b63ad76242a4a3db6403212b56c9b23.zip
PR12500: Improve the wording of the diagnostic for a redefinition of a name
in the wrong namespace scope. Patch by Jonathan Sauer! llvm-svn: 154656
-rw-r--r--clang/include/clang/Basic/DiagnosticSemaKinds.td4
-rw-r--r--clang/lib/Sema/SemaDecl.cpp2
-rw-r--r--clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp6
-rw-r--r--clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp6
-rw-r--r--clang/test/SemaCXX/nested-name-spec.cpp2
-rw-r--r--clang/test/SemaCXX/qual-id-test.cpp2
6 files changed, 11 insertions, 11 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 813ef19d87d..e553740ab1d 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/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/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index f54f0fd942a..8b314b524f4 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/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<NamedDecl>(DC) << SS.getRange();
+ << Name << cast<NamedDecl>(Cur) << cast<NamedDecl>(DC) << SS.getRange();
return true;
}
diff --git a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp b/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp
index acfbb46447d..b0a19fb93a6 100644
--- a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp
+++ b/clang/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<int>::member;
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 @@ void N0::X0<void*>::ft1(void *, float) { }
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}}
}
diff --git a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp b/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
index dff7cd5b40c..c972bf7c7d0 100644
--- a/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
+++ b/clang/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<int>::member; // expected-warning{{C++11 extension}}
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 @@ void N0::X0<void*>::ft1(void *, float) { } // expected-warning{{function templat
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}}
}
diff --git a/clang/test/SemaCXX/nested-name-spec.cpp b/clang/test/SemaCXX/nested-name-spec.cpp
index a60b115695d..b3176348448 100644
--- a/clang/test/SemaCXX/nested-name-spec.cpp
+++ b/clang/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/clang/test/SemaCXX/qual-id-test.cpp b/clang/test/SemaCXX/qual-id-test.cpp
index e43e6887c47..9994d75cac1 100644
--- a/clang/test/SemaCXX/qual-id-test.cpp
+++ b/clang/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'}}
}
}
OpenPOWER on IntegriCloud