From 5135baed7db0fdfcaffced3d582c28a2a01f7ba1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabien=20Ch=C3=AAne?= Date: Sun, 1 Jan 2012 18:26:23 +0100 Subject: [PATCH] crash25.C: Adjust. gcc/testsuite/ChangeLog 2011-12-31 Fabien Chene * g++.old-deja/g++.brendan/crash25.C: Adjust. * g++.old-deja/g++.brendan/crash56.C: Likewise. * g++.old-deja/g++.jason/access14.C: Likewise. * g++.old-deja/g++.jason/access8.C: Likewise. * g++.old-deja/g++.jason/access1.C: Likewise. * g++.old-deja/g++.other/access3.C: Likewise. * g++.old-deja/g++.other/access5.C: Likewise. * g++.old-deja/g++.law/unsorted1.C: Likewise. * g++.old-deja/g++.law/visibility22.C: Likewise. * g++.old-deja/g++.law/visibility26.C: Likewise. * g++.old-deja/g++.mike/p2746.C: Likewise. * g++.dg/debug/using1.C: Likewise. * g++.dg/lookup/using51.C: Likewise. * g++.dg/inherit/using5.C: Likewise. * g++.dg/inherit/pr30297.C: Likewise. * g++.dg/inherit/access8.C: Likewise. * g++.dg/torture/pr39362.C: Likewise. * g++.dg/template/crash13.C: Likewise. * g++.dg/template/using10.C: Likewise. gcc/cp/ChangeLog 2011-12-31 Fabien Chene * parser.c (cp_parser_using_declaration): Add a warning about deprecated access declarations when no errors were encountered while parsing the access declaration. Save the first token in order to emit the warning at the right place. From-SVN: r182772 --- gcc/cp/ChangeLog | 7 ++++++ gcc/cp/parser.c | 15 +++++++++++-- gcc/testsuite/ChangeLog | 22 +++++++++++++++++++ gcc/testsuite/g++.dg/debug/using1.C | 2 +- gcc/testsuite/g++.dg/inherit/access8.C | 4 ++-- gcc/testsuite/g++.dg/inherit/pr30297.C | 2 +- gcc/testsuite/g++.dg/lookup/using51.C | 1 + gcc/testsuite/g++.dg/template/crash13.C | 1 + gcc/testsuite/g++.dg/template/using10.C | 2 +- gcc/testsuite/g++.dg/torture/pr39362.C | 2 +- .../g++.old-deja/g++.brendan/crash25.C | 2 +- .../g++.old-deja/g++.brendan/crash56.C | 2 +- .../g++.old-deja/g++.jason/access1.C | 4 ++-- .../g++.old-deja/g++.jason/access14.C | 2 +- .../g++.old-deja/g++.jason/access8.C | 2 +- .../g++.old-deja/g++.law/unsorted1.C | 2 +- .../g++.old-deja/g++.law/visibility22.C | 4 ++-- .../g++.old-deja/g++.law/visibility26.C | 4 +++- gcc/testsuite/g++.old-deja/g++.mike/p2746.C | 6 ++--- .../g++.old-deja/g++.other/access3.C | 2 +- .../g++.old-deja/g++.other/access5.C | 2 +- 21 files changed, 67 insertions(+), 23 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 50659896501c..3d2c5de07917 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2011-12-31 Fabien Chêne + + * parser.c (cp_parser_using_declaration): Add a warning about + deprecated access declarations when no errors were encountered + while parsing the access declaration. Save the first token in + order to emit the warning at the right place. + 2011-12-31 Paolo Carlini PR c++/51397 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index d4947e7c5d45..0f5bb8e57099 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -14887,9 +14887,14 @@ cp_parser_using_declaration (cp_parser* parser, tree decl; tree identifier; tree qscope; + int oldcount = errorcount; + cp_token *diag_token = NULL; if (access_declaration_p) - cp_parser_parse_tentatively (parser); + { + diag_token = cp_lexer_peek_token (parser->lexer); + cp_parser_parse_tentatively (parser); + } else { /* Look for the `using' keyword. */ @@ -15000,7 +15005,13 @@ cp_parser_using_declaration (cp_parser* parser, /* Look for the final `;'. */ cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); - + + if (access_declaration_p && errorcount == oldcount) + warning_at (diag_token->location, OPT_Wdeprecated, + "access declarations are deprecated " + "in favour of using-declarations; " + "suggestion: add the % keyword"); + return true; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f48bd72fe465..617ef117cc8f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,25 @@ +2011-12-31 Fabien Chêne + + * g++.old-deja/g++.brendan/crash25.C: Adjust. + * g++.old-deja/g++.brendan/crash56.C: Likewise. + * g++.old-deja/g++.jason/access14.C: Likewise. + * g++.old-deja/g++.jason/access8.C: Likewise. + * g++.old-deja/g++.jason/access1.C: Likewise. + * g++.old-deja/g++.other/access3.C: Likewise. + * g++.old-deja/g++.other/access5.C: Likewise. + * g++.old-deja/g++.law/unsorted1.C: Likewise. + * g++.old-deja/g++.law/visibility22.C: Likewise. + * g++.old-deja/g++.law/visibility26.C: Likewise. + * g++.old-deja/g++.mike/p2746.C: Likewise. + * g++.dg/debug/using1.C: Likewise. + * g++.dg/lookup/using51.C: Likewise. + * g++.dg/inherit/using5.C: Likewise. + * g++.dg/inherit/pr30297.C: Likewise. + * g++.dg/inherit/access8.C: Likewise. + * g++.dg/torture/pr39362.C: Likewise. + * g++.dg/template/crash13.C: Likewise. + * g++.dg/template/using10.C: Likewise. + 2012-01-01 Thomas Koenig PR fortran/51502 diff --git a/gcc/testsuite/g++.dg/debug/using1.C b/gcc/testsuite/g++.dg/debug/using1.C index d3168fc6c1c7..7b13e53bb098 100644 --- a/gcc/testsuite/g++.dg/debug/using1.C +++ b/gcc/testsuite/g++.dg/debug/using1.C @@ -9,7 +9,7 @@ struct A struct B : public A { - A::d; + A::d; // { dg-warning "deprecated" } }; B b; diff --git a/gcc/testsuite/g++.dg/inherit/access8.C b/gcc/testsuite/g++.dg/inherit/access8.C index a11ea8e04943..310b7a01a39f 100644 --- a/gcc/testsuite/g++.dg/inherit/access8.C +++ b/gcc/testsuite/g++.dg/inherit/access8.C @@ -13,8 +13,8 @@ public: class B : private A { public: - A::i; - A::A1; + A::i; // { dg-warning "deprecated" } + A::A1; // { dg-warning "deprecated" } }; void diff --git a/gcc/testsuite/g++.dg/inherit/pr30297.C b/gcc/testsuite/g++.dg/inherit/pr30297.C index 222d9ab8059e..a8edf84852b4 100644 --- a/gcc/testsuite/g++.dg/inherit/pr30297.C +++ b/gcc/testsuite/g++.dg/inherit/pr30297.C @@ -7,5 +7,5 @@ struct A extern "C" struct B : A { - A::i; + A::i; // { dg-warning "deprecated" } }; diff --git a/gcc/testsuite/g++.dg/lookup/using51.C b/gcc/testsuite/g++.dg/lookup/using51.C index 8438f7f2cc80..8e3e56b056f7 100644 --- a/gcc/testsuite/g++.dg/lookup/using51.C +++ b/gcc/testsuite/g++.dg/lookup/using51.C @@ -1,5 +1,6 @@ // PR c++/51382 // { dg-do compile } +// { dg-options "-Wno-deprecated" } template< int Value > struct Base diff --git a/gcc/testsuite/g++.dg/template/crash13.C b/gcc/testsuite/g++.dg/template/crash13.C index e8e05945662a..14bec68e9b32 100644 --- a/gcc/testsuite/g++.dg/template/crash13.C +++ b/gcc/testsuite/g++.dg/template/crash13.C @@ -13,6 +13,7 @@ template struct C { typedef typename A::B X; X::Y; // { dg-error "not a base type" } +// { dg-warning "deprecated" "" { target *-*-* } 15 } }; C c; diff --git a/gcc/testsuite/g++.dg/template/using10.C b/gcc/testsuite/g++.dg/template/using10.C index 8f0cbda2a888..902773cd51d3 100644 --- a/gcc/testsuite/g++.dg/template/using10.C +++ b/gcc/testsuite/g++.dg/template/using10.C @@ -7,5 +7,5 @@ struct B { template class I : public B {}; template class D : private I { - I::B::foo; + I::B::foo; // { dg-warning "deprecated" } }; diff --git a/gcc/testsuite/g++.dg/torture/pr39362.C b/gcc/testsuite/g++.dg/torture/pr39362.C index e7b0774d96f1..554f9d06bac0 100644 --- a/gcc/testsuite/g++.dg/torture/pr39362.C +++ b/gcc/testsuite/g++.dg/torture/pr39362.C @@ -57,7 +57,7 @@ template struct I : H I (int capacity) { allocateBuffer (capacity); } ~I () { this->deallocateBuffer (buffer ()); } using H ::allocateBuffer; - H ::buffer; + H ::buffer; // { dg-warning "deprecated" } }; template struct J { diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash25.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash25.C index dece6f7dcb74..0c9b963ef257 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/crash25.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash25.C @@ -14,5 +14,5 @@ public: class buff_head : private port_head { public: static int rep; - port_head::cap; + port_head::cap; // { dg-warning "deprecated" } }; diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash56.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash56.C index e3bff80e6107..776041519eba 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/crash56.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash56.C @@ -1,5 +1,5 @@ // { dg-do assemble } -// { dg-options "" } +// { dg-options "-Wno-deprecated" } // GROUPS passed old-abort const bool FALSE = 0; diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access1.C b/gcc/testsuite/g++.old-deja/g++.jason/access1.C index 9d7104105b42..e7065d9baa0d 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/access1.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/access1.C @@ -8,10 +8,10 @@ public: class B: private A { public: - A::foo; + A::foo; // { dg-warning "deprecated" } }; void foo() { B b; - b.foo (); // { dg-bogus "" } + b.foo (); // { dg-bogus "" } } diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access14.C b/gcc/testsuite/g++.old-deja/g++.jason/access14.C index baebfe4cfc0b..7edc85764a04 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/access14.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/access14.C @@ -4,7 +4,7 @@ template struct A { T t; }; template class B: private T { public: - T::t; // { dg-bogus "" } doesn't recognize access decl + T::t; // { dg-warning "deprecated" } }; template class B >; diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access8.C b/gcc/testsuite/g++.old-deja/g++.jason/access8.C index 0297c106b9e7..c488ef76765e 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/access8.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/access8.C @@ -12,7 +12,7 @@ protected: class mel : private inh { protected: int t; - inh::myf; + inh::myf; // { dg-warning "deprecated" } }; class top_t : protected mel { diff --git a/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C b/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C index c220d9936b90..14f9ee033a79 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C +++ b/gcc/testsuite/g++.old-deja/g++.law/unsorted1.C @@ -20,7 +20,7 @@ class B : public A { class C : private B { public: - B::func; + B::func; // { dg-warning "deprecated" } }; class D { diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C index f97ef814763e..e3d9d1f6d002 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C @@ -19,7 +19,7 @@ public: class B : private A { protected: - A::f; + A::f; // { dg-warning "deprecated" } public: - A::g; + A::g; // { dg-warning "deprecated" } }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility26.C b/gcc/testsuite/g++.old-deja/g++.law/visibility26.C index cfef2df504f2..a6e702180af1 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility26.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility26.C @@ -14,5 +14,7 @@ class X { class Y : private X { public: void f(int); - X::f; // used to be an error; now equivalent to 'using X::f' + + // 'X::f' used to be an error; now equivalent to 'using X::f' + X::f; // { dg-warning "deprecated" } }; diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p2746.C b/gcc/testsuite/g++.old-deja/g++.mike/p2746.C index 1bc1ce3591e1..3e68740e2324 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/p2746.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/p2746.C @@ -86,7 +86,7 @@ public: void remove(T *p) { IListBase::remove(p); } T *head() { return (T *)IListBase::head(); } T *get() { return (T *)IListBase::get(); } - IListBase::empty; + IListBase::empty; // { dg-warning "deprecated" } friend class IListIter; }; @@ -136,8 +136,8 @@ class IListIter : private IListIterBase { public: IListIter(const IList &list) : IListIterBase(list) { } T *cur() { return (T *)IListIterBase::cur(); } - IListIterBase::next; - IListIterBase::done; + IListIterBase::next; // { dg-warning "deprecated" } + IListIterBase::done; // { dg-warning "deprecated" } }; diff --git a/gcc/testsuite/g++.old-deja/g++.other/access3.C b/gcc/testsuite/g++.old-deja/g++.other/access3.C index 4752ac8a8da5..417608998416 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/access3.C +++ b/gcc/testsuite/g++.old-deja/g++.other/access3.C @@ -10,7 +10,7 @@ struct A struct B: private virtual A { - A::f; + A::f; // { dg-warning "deprecated" } }; struct C: private virtual A, public B diff --git a/gcc/testsuite/g++.old-deja/g++.other/access5.C b/gcc/testsuite/g++.old-deja/g++.other/access5.C index 431ba416aacd..a6364c567a6c 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/access5.C +++ b/gcc/testsuite/g++.old-deja/g++.other/access5.C @@ -9,7 +9,7 @@ protected: class B : private A { protected: - A::i; + A::i; // { dg-warning "deprecated" } }; struct C : public B { -- 2.47.3