When we complain about uses of explicitly-deleted methods, it seems
odd to me to refer to "declared here":
/usr/include/c++/7/bits/stl_pair.h:292:17: error: use of deleted function
'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&)
[with _Tp = X; _Dp = std::default_delete<X>]'
In file included from /usr/include/c++/7/memory:80:0,
from /tmp/test.cc:2:
/usr/include/c++/7/bits/unique_ptr.h:388:7: note: declared here
unique_ptr(const unique_ptr&) = delete;
^~~~~~~~~~
This patch tweaks the wording to say "deleted here" instead.
Successfully bootstrapped®rtested on x86_64-pc-linux-gnu.
OK for trunk?
Also, is there a way to determine if these are special member functions,
and hence to tweak the wording? It seems more readable to say:
"use of deleted copy constructor 'std:unique_ptr<[...snip...]"
rather than just:
"use of deleted function 'std:unique_ptr<[...snip...]"
e.g. for the special member functions covered by the "Rule of Five"?
gcc/cp/ChangeLog:
* decl2.c (mark_used): When highlighting the location of
explicitly-deleted methods, say "deleted here" rather than
"declared here".
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/defaulted13.C: Update for change of wording from
"declared here" to "deleted here".
* g++.dg/cpp0x/defaulted2.C: Likewise.
* g++.dg/cpp0x/defaulted26.C: Likewise.
* g++.dg/cpp0x/defaulted3.C: Likewise.
* g++.dg/cpp0x/deleted12.C: Likewise.
* g++.dg/cpp0x/implicit1.C: Likewise.
* g++.dg/cpp0x/implicit11.C: Likewise.
* g++.dg/cpp0x/inh-ctor13.C: Likewise.
* g++.dg/cpp0x/initlist47.C: Likewise.
* g++.dg/cpp0x/initlist9.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-errloc.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-errloc2.C: Likewise.
* g++.dg/cpp0x/union4.C: Likewise.
* g++.dg/template/conv12.C: Likewise.
---
gcc/cp/decl2.c | 2 +-
gcc/testsuite/g++.dg/cpp0x/defaulted13.C | 4 ++--
gcc/testsuite/g++.dg/cpp0x/defaulted2.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/defaulted26.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/defaulted3.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/deleted12.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/implicit1.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/implicit11.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/inh-ctor13.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/initlist47.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/initlist9.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C | 2 +-
gcc/testsuite/g++.dg/cpp0x/union4.C | 2 +-
gcc/testsuite/g++.dg/template/conv12.C | 2 +-
15 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 2bde588..d2d1f84 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -5013,7 +5013,7 @@ mark_used (tree decl, tsubst_flags_t complain)
{
error ("use of deleted function %qD", decl);
if (!maybe_explain_implicit_delete (decl))
- inform (DECL_SOURCE_LOCATION (decl), "declared here");
+ inform (DECL_SOURCE_LOCATION (decl), "deleted here");
}
return false;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
b/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
index 68dc5d0..89c6171 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted13.C
@@ -7,13 +7,13 @@ struct NonCopyable {
};
template<>
-NonCopyable<int>::NonCopyable(NonCopyable<int> const&) = delete; // {
dg-message "declared" }
+NonCopyable<int>::NonCopyable(NonCopyable<int> const&) = delete; // {
dg-message "deleted here" }
template<typename T>
NonCopyable<T>::NonCopyable(NonCopyable<T> const&) = default;
template<>
-NonCopyable<double>::NonCopyable(NonCopyable<double> const&) = delete; // {
dg-message "declared" }
+NonCopyable<double>::NonCopyable(NonCopyable<double> const&) = delete; // {
dg-message "deleted here" }
int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
b/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
index 63be997..269ae78 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
@@ -42,7 +42,7 @@ struct E
struct F
{
F() = default;
- F(const F&) = delete; // { dg-message "declared" }
+ F(const F&) = delete; // { dg-message "deleted here" }
};
struct G
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted26.C
b/gcc/testsuite/g++.dg/cpp0x/defaulted26.C
index f14a0e8..7df6e08 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted26.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted26.C
@@ -1,7 +1,7 @@
// PR c++/49066
// { dg-do compile { target c++11 } }
-void foo() = delete; // { dg-message "declared here" }
+void foo() = delete; // { dg-message "deleted here" }
void foo();
int main() { foo(); } // { dg-error "deleted" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
b/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
index 75e89c8..e0f1f4e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted3.C
@@ -4,7 +4,7 @@
template<class T>
struct A {
template<class U>
- bool operator==(const A<U>&) = delete; // { dg-message "declared" }
+ bool operator==(const A<U>&) = delete; // { dg-message "deleted here" }
operator bool () { return true; }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/deleted12.C
b/gcc/testsuite/g++.dg/cpp0x/deleted12.C
index 770bb9c..e158955 100644
--- a/gcc/testsuite/g++.dg/cpp0x/deleted12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/deleted12.C
@@ -4,7 +4,7 @@
struct A
{
A() {}
- ~A() = delete; // { dg-message "declared here" }
+ ~A() = delete; // { dg-message "deleted here" }
};
static A a; // { dg-error "deleted" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit1.C
b/gcc/testsuite/g++.dg/cpp0x/implicit1.C
index e784ee4..297127d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/implicit1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit1.C
@@ -15,7 +15,7 @@ D d; // { dg-error "deleted" }
struct E
{
- ~E() = delete; // { dg-message "declared here" }
+ ~E() = delete; // { dg-message "deleted here" }
};
struct F
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit11.C
b/gcc/testsuite/g++.dg/cpp0x/implicit11.C
index 3471ad9..919ffbf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/implicit11.C
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit11.C
@@ -4,7 +4,7 @@
struct A
{
- ~A() = delete; // { dg-message "declared here" }
+ ~A() = delete; // { dg-message "deleted here" }
};
struct B: A { }; // { dg-error "deleted" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor13.C
b/gcc/testsuite/g++.dg/cpp0x/inh-ctor13.C
index bd021e6..4bed8fd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/inh-ctor13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor13.C
@@ -8,7 +8,7 @@ struct A
struct C
{
- C() = delete; // { dg-message "declared here" }
+ C() = delete; // { dg-message "deleted here" }
};
struct B: A, C
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist47.C
b/gcc/testsuite/g++.dg/cpp0x/initlist47.C
index 0b34ff9..033083d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist47.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist47.C
@@ -1,6 +1,6 @@
// { dg-do compile { target c++11 } }
-struct A { ~A() = delete; }; // { dg-message "declared" }
+struct A { ~A() = delete; }; // { dg-message "deleted here" }
int main()
{
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist9.C
b/gcc/testsuite/g++.dg/cpp0x/initlist9.C
index ef806d0..baec4a5 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist9.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist9.C
@@ -8,7 +8,7 @@ struct b
b() = default;
~b() = default;
b& operator=(const b&) = delete;
- b(const b&) = delete; // { dg-message "declared" "" { target
c++14_down } }
+ b(const b&) = delete; // { dg-message "deleted here" "" {
target c++14_down } }
b(bool _t): t (_t) { }
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
index 3dc7f87..6aeb52e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C
@@ -5,7 +5,7 @@
struct A
{
A();
- A(const A& a) = delete; // { dg-message "declared" }
+ A(const A& a) = delete; // { dg-message "deleted here" }
};
int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
index 4ddd38c..3edaf04 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C
@@ -3,7 +3,7 @@
struct A {
A();
- A(const A&) = delete; // { dg-message "declared" }
+ A(const A&) = delete; // { dg-message "deleted here" }
};
template <class T>
diff --git a/gcc/testsuite/g++.dg/cpp0x/union4.C
b/gcc/testsuite/g++.dg/cpp0x/union4.C
index cf9916d..6cf46a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/union4.C
+++ b/gcc/testsuite/g++.dg/cpp0x/union4.C
@@ -3,7 +3,7 @@
struct SFoo
{
- SFoo() =delete; // { dg-message "declared" }
+ SFoo() =delete; // { dg-message "deleted here" }
};
union UFoo // { dg-error "deleted" }
diff --git a/gcc/testsuite/g++.dg/template/conv12.C
b/gcc/testsuite/g++.dg/template/conv12.C
index dea72d6..10122f6 100644
--- a/gcc/testsuite/g++.dg/template/conv12.C
+++ b/gcc/testsuite/g++.dg/template/conv12.C
@@ -4,7 +4,7 @@
struct C1
{
template <class T>
- operator T() = delete; // { dg-message "declared here" "" { target
c++11 } }
+ operator T() = delete; // { dg-message "deleted here" "" { target
c++11 } }
operator bool() { return false; }
} c1;
--
1.8.5.3