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