diff options
author | Jason Merrill <jason@redhat.com> | 2010-06-29 20:51:13 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-06-29 20:51:13 -0400 |
commit | 9a71b305bf556ad173b123d2d58612652b82e6dc (patch) | |
tree | 2bc73889c856176b1bd79beac62f6c6af63acf4b /gcc | |
parent | ac1774315cb7ebc781ade2f9fd99de1c258b9221 (diff) | |
download | gcc-9a71b305bf556ad173b123d2d58612652b82e6dc.zip gcc-9a71b305bf556ad173b123d2d58612652b82e6dc.tar.gz gcc-9a71b305bf556ad173b123d2d58612652b82e6dc.tar.bz2 |
* decl2.c (mark_used): Adjust error for use of deleted function.
From-SVN: r161580
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted10.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted13.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted2.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted3.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist9.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/synth2.C | 2 |
11 files changed, 30 insertions, 18 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a8df233..9ac64c4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2010-06-29 Jason Merrill <jason@redhat.com> + * decl2.c (mark_used): Adjust error for use of deleted function. + Machinery to support implicit delete/move. * cp-tree.h: (struct lang_type_class): Add lazy_move_assign, has_complex_move_ctor, has_complex_move_assign bitfields. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 1e088e0..ce54c79 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4110,8 +4110,9 @@ mark_used (tree decl) return; } } - error ("deleted function %q+D", decl); - error ("used here"); + error ("use of deleted function %qD", decl); + if (!maybe_explain_implicit_delete (decl)) + error_at (DECL_SOURCE_LOCATION (decl), "declared here"); return; } /* If we don't need a value, then we don't need to synthesize DECL. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2d1aa2d..cf7180a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,14 @@ 2010-06-29 Jason Merrill <jason@redhat.com> + * g++.dg/cpp0x/defaulted10.C: Adjust for new deleted message. + * g++.dg/cpp0x/defaulted13.C: Adjust. + * g++.dg/cpp0x/defaulted2.C: Adjust. + * g++.dg/cpp0x/defaulted3.C: Adjust. + * g++.dg/cpp0x/initlist9.C: Adjust. + * g++.dg/cpp0x/lambda/lambda-errloc.C: Adjust. + * g++.dg/cpp0x/lambda/lambda-errloc2.C: Adjust. + * g++.dg/init/synth2.C: Adjust. + * g++.dg/cpp0x/defaulted19.C: New. * g++.dg/expr/string-1.C: Fix for -std=c++0x. diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted10.C b/gcc/testsuite/g++.dg/cpp0x/defaulted10.C index d169e0c..64fa5f0 100644 --- a/gcc/testsuite/g++.dg/cpp0x/defaulted10.C +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted10.C @@ -3,12 +3,12 @@ struct A { - template<typename T> void foo(T) = delete; // { dg-error "previously|deleted" } + template<typename T> void foo(T) = delete; // { dg-error "previously|declared" } }; template<typename T> void A::foo(T) {} // { dg-error "redefinition" } void bar() { - A().foo(0); // { dg-error "used" } + A().foo(0); // { dg-error "use" } } diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted13.C b/gcc/testsuite/g++.dg/cpp0x/defaulted13.C index 87b8100..8b23579 100644 --- a/gcc/testsuite/g++.dg/cpp0x/defaulted13.C +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted13.C @@ -7,22 +7,22 @@ struct NonCopyable { }; template<> -NonCopyable<int>::NonCopyable(NonCopyable<int> const&) = delete; // { dg-error "deleted" } +NonCopyable<int>::NonCopyable(NonCopyable<int> const&) = delete; // { dg-error "declared" } template<typename T> NonCopyable<T>::NonCopyable(NonCopyable<T> const&) = default; template<> -NonCopyable<double>::NonCopyable(NonCopyable<double> const&) = delete; // { dg-error "deleted" } +NonCopyable<double>::NonCopyable(NonCopyable<double> const&) = delete; // { dg-error "declared" } int main() { NonCopyable<double> nc_dbl; - NonCopyable<double> nc_dbl_cpy(nc_dbl); // { dg-error "used here" } + NonCopyable<double> nc_dbl_cpy(nc_dbl); // { dg-error "use" } NonCopyable<int> nc_int; - NonCopyable<int> nc_int_cpy(nc_int); // { dg-error "used here" } + NonCopyable<int> nc_int_cpy(nc_int); // { dg-error "use" } NonCopyable<char> nc_char; NonCopyable<char> nc_char_cpy(nc_char); diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted2.C b/gcc/testsuite/g++.dg/cpp0x/defaulted2.C index ad3274a..909ebc5 100644 --- a/gcc/testsuite/g++.dg/cpp0x/defaulted2.C +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted2.C @@ -41,7 +41,7 @@ struct E struct F { F() = default; - F(const F&) = delete; // { dg-error "deleted" } + F(const F&) = delete; // { dg-error "declared" } }; struct G @@ -60,7 +60,7 @@ union U int main() { F f; - F f2(f); // { dg-error "used" } + F f2(f); // { dg-error "use" } B* b = new const B; // { dg-error "uninitialized const" } } diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted3.C b/gcc/testsuite/g++.dg/cpp0x/defaulted3.C index efde415..5e2116b 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-error "deleted function" } + bool operator==(const A<U>&) = delete; // { dg-error "declared" } operator bool () { return true; } }; @@ -12,5 +12,5 @@ int main() { A<int> a1; A<void> a2; - if(a1 == a2) {} // { dg-error "used here" } + if(a1 == a2) {} // { dg-error "use" } } diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist9.C b/gcc/testsuite/g++.dg/cpp0x/initlist9.C index 2bc2d17..d596b39 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-error "deleted" } + b(const b&) = delete; // { dg-error "declared" } b(bool _t): t (_t) { } }; @@ -19,7 +19,7 @@ int main() b tst1 = { false }; // copy initialization. - b tst2 = false; // { dg-error "used here" } + b tst2 = false; // { dg-error "use" } // direct list initialization b tst3 { false }; diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C index 4037331..f476669 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-error "deleted" } + A(const A& a) = delete; // { dg-error "declared" } }; 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 3d53c13..dab53f1 100644 --- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C @@ -3,14 +3,14 @@ struct A { A(); - A(const A&) = delete; // { dg-error "deleted function" } + A(const A&) = delete; // { dg-error "declared" } }; template <class T> void f() { T t; - [t] { return 0; }; // { dg-error "used here" } + [t] { return 0; }; // { dg-error "use" } } int main() diff --git a/gcc/testsuite/g++.dg/init/synth2.C b/gcc/testsuite/g++.dg/init/synth2.C index 624f10b..507db34 100644 --- a/gcc/testsuite/g++.dg/init/synth2.C +++ b/gcc/testsuite/g++.dg/init/synth2.C @@ -13,5 +13,5 @@ class A // { dg-error "no match" } int main() { A a; - A b = a; // { dg-message "required here" } + A b = a; // { dg-message "required here|deleted" } } |