crash25.C: Adjust.
authorFabien Chêne <fabien@gcc.gnu.org>
Sun, 1 Jan 2012 17:26:23 +0000 (18:26 +0100)
committerFabien Chêne <fabien@gcc.gnu.org>
Sun, 1 Jan 2012 17:26:23 +0000 (18:26 +0100)
gcc/testsuite/ChangeLog

2011-12-31  Fabien Chene  <fabien@gcc.gnu.org>

* 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  <fabien@gcc.gnu.org>

* 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

21 files changed:
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/debug/using1.C
gcc/testsuite/g++.dg/inherit/access8.C
gcc/testsuite/g++.dg/inherit/pr30297.C
gcc/testsuite/g++.dg/lookup/using51.C
gcc/testsuite/g++.dg/template/crash13.C
gcc/testsuite/g++.dg/template/using10.C
gcc/testsuite/g++.dg/torture/pr39362.C
gcc/testsuite/g++.old-deja/g++.brendan/crash25.C
gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
gcc/testsuite/g++.old-deja/g++.jason/access1.C
gcc/testsuite/g++.old-deja/g++.jason/access14.C
gcc/testsuite/g++.old-deja/g++.jason/access8.C
gcc/testsuite/g++.old-deja/g++.law/unsorted1.C
gcc/testsuite/g++.old-deja/g++.law/visibility22.C
gcc/testsuite/g++.old-deja/g++.law/visibility26.C
gcc/testsuite/g++.old-deja/g++.mike/p2746.C
gcc/testsuite/g++.old-deja/g++.other/access3.C
gcc/testsuite/g++.old-deja/g++.other/access5.C

index 50659896501c208cfff08538aa82ea9c3f77b87a..3d2c5de079177bc13df3dd837dde3983f2a644d4 100644 (file)
@@ -1,3 +1,10 @@
+2011-12-31  Fabien Chêne  <fabien@gcc.gnu.org>
+
+       * 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  <paolo.carlini@oracle.com>
 
        PR c++/51397
index d4947e7c5d4513d056f7b6f58c80909e3cfd966f..0f5bb8e5709950af1de344d4a583ebb1612e6fe0 100644 (file)
@@ -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 %<using%> keyword");
+
   return true;
 }
 
index f48bd72fe4652d32a1c13ba01440eb042c4e0087..617ef117cc8f027283bc8e6b706706ab09279a2f 100644 (file)
@@ -1,3 +1,25 @@
+2011-12-31  Fabien Chêne  <fabien@gcc.gnu.org>
+
+       * 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  <tkoenig@gcc.gnu.org>
 
        PR fortran/51502
index d3168fc6c1c7d01fe841f5d763dcb88323c16780..7b13e53bb098dc4f9081ad34f44c97d180b49b11 100644 (file)
@@ -9,7 +9,7 @@ struct A
 
 struct B : public A
 {
-  A::d;
+  A::d; // { dg-warning "deprecated" }
 };
 
 B b;
index a11ea8e04943e49c1b4ae09e14412a94de67228c..310b7a01a39ff9fc0afceea9817859020514b4bb 100644 (file)
@@ -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
index 222d9ab8059ebb9a9464170869ee65dcf52256bd..a8edf84852b431a3956bac672a4ae43592f4084a 100644 (file)
@@ -7,5 +7,5 @@ struct A
 
 extern "C" struct B : A
 {
-  A::i;
+  A::i; // { dg-warning "deprecated" }
 };
index 8438f7f2cc80fd130466aeeda04565996867ce85..8e3e56b056f763d3b7b05b03041ee1a2d7b70d10 100644 (file)
@@ -1,5 +1,6 @@
 // PR c++/51382
 // { dg-do compile }
+// { dg-options "-Wno-deprecated" }
 
 template< int Value >
 struct Base
index e8e05945662a77f8d731294fdaebb1e6e726e9b2..14bec68e9b32333d3871dbf59f4895e84e80cb38 100644 (file)
@@ -13,6 +13,7 @@ template <typename T> struct C
 {
     typedef typename A<T>::B X;
     X::Y;                      // { dg-error "not a base type" }
+// { dg-warning "deprecated" "" { target *-*-* } 15 }
 };
 
 C<void> c;
index 8f0cbda2a8881f5841a7e339ca5b0c70ef203761..902773cd51d395e147d83c2e9cbfdab4da56d076 100644 (file)
@@ -7,5 +7,5 @@ struct B {
 template <typename T> class I : public B {}; 
  
 template <typename T> class D : private I<T> { 
-  I<T>::B::foo; 
+  I<T>::B::foo; // { dg-warning "deprecated" } 
 }; 
index e7b0774d96f17f4acb22e6dc237f617c530e6c1c..554f9d06bac09ce3d9e7a5ae8a899cc7d45f35b6 100644 (file)
@@ -57,7 +57,7 @@ template <typename T> struct I <T, 0> : H <T>
   I (int capacity) { allocateBuffer (capacity); }
   ~I () { this->deallocateBuffer (buffer ()); }
   using H <T>::allocateBuffer;
-  H <T>::buffer;
+  H <T>::buffer; // { dg-warning "deprecated" } 
 };
 template <typename T, int cap = 0> struct J
 {
index dece6f7dcb74cf84f04baf3f626a5d2cc2bb01e6..0c9b963ef25713f627625c9b913b7a72e906f866 100644 (file)
@@ -14,5 +14,5 @@ public:
 class buff_head : private port_head {
 public:
        static int rep;
-       port_head::cap;
+       port_head::cap; // { dg-warning "deprecated" }
 };
index e3bff80e610755f5d541a78eb8a09ac12b066041..776041519eba0e96496a10377be80dea0df613b6 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "" }
+// { dg-options "-Wno-deprecated" }
 // GROUPS passed old-abort
 
 const bool FALSE = 0;
index 9d7104105b42d48dba2b3e243e057620a354dd7d..e7065d9baa0dcfcbbb934abec1c38026b9ac348c 100644 (file)
@@ -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 "" }
 }
index baebfe4cfc0b2d8698a5e4ab4d0466e53fdf1f53..7edc85764a041f93a7e50a70cfac2be20ab94094 100644 (file)
@@ -4,7 +4,7 @@ template <class T> struct A { T t; };
 
 template <class T> class B: private T {
  public:
-  T::t;                           // { dg-bogus "" } doesn't recognize access decl
+  T::t; // { dg-warning "deprecated" }
 };
 
 template class B<A<int> >;
index 0297c106b9e7f474afe278f2abcf929e93a6c34a..c488ef76765ef40ad12ffa2d4c8d500aa4f5d514 100644 (file)
@@ -12,7 +12,7 @@ protected:
 class mel : private inh {
 protected:
         int t;
-       inh::myf;
+       inh::myf;  // { dg-warning "deprecated" }
 };
 
 class top_t : protected mel {
index c220d9936b90df85d04b9cf81bc8545e89be38fe..14f9ee033a79b99b274e3e2532d464fbaa0d1bd0 100644 (file)
@@ -20,7 +20,7 @@ class B : public A {
 
 class C : private B {
   public:
-    B::func;
+    B::func; // { dg-warning "deprecated" }
 };
 
 class D {
index f97ef814763e5ea28b171b7c3a60045a0a2fd0ed..e3d9d1f6d002a1ce1ded0a4f25eb5389d75ba77a 100644 (file)
@@ -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" }
 };
index cfef2df504f26732b07e1cc2ed7d7e8c836c6282..a6e702180af1c592d3c222f53b85fb14a593c902 100644 (file)
@@ -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" }
 };
index 1bc1ce3591e172bcd6c239a5349aa698ea01d300..3e68740e23245c490bd4b9910920991adf1453dd 100644 (file)
@@ -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<T>;
 };
 
@@ -136,8 +136,8 @@ class IListIter : private IListIterBase {
 public:
   IListIter(const IList<T> &list) : IListIterBase(list) { }
   T *cur() { return (T *)IListIterBase::cur(); }
-  IListIterBase::next;
-  IListIterBase::done;
+  IListIterBase::next; // { dg-warning "deprecated" }
+  IListIterBase::done; // { dg-warning "deprecated" }
 };
 
 
index 4752ac8a8da51b8a0f8769361a0cd4785dd1572e..41760899841641ef30d10dea8dd90ae9e75197e4 100644 (file)
@@ -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
index 431ba416aacd33a10fea89057f9b03c0560bacf2..a6364c567a6caf8dce230a9a0addb7d05c6ca235 100644 (file)
@@ -9,7 +9,7 @@ protected:
 class B : private A
 {
 protected:
-  A::i;
+  A::i; // { dg-warning "deprecated" }
 };
 
 struct C : public B {