OSDN Git Service

gcc/testsuite/ChangeLog
authorfabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 1 Jan 2012 17:26:23 +0000 (17:26 +0000)
committerfabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 1 Jan 2012 17:26:23 +0000 (17:26 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182772 138bc75d-0d04-0410-961f-82ee72b054a4

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 5065989..3d2c5de 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 d4947e7..0f5bb8e 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 f48bd72..617ef11 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 d3168fc..7b13e53 100644 (file)
@@ -9,7 +9,7 @@ struct A
 
 struct B : public A
 {
-  A::d;
+  A::d; // { dg-warning "deprecated" }
 };
 
 B b;
index a11ea8e..310b7a0 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 222d9ab..a8edf84 100644 (file)
@@ -7,5 +7,5 @@ struct A
 
 extern "C" struct B : A
 {
-  A::i;
+  A::i; // { dg-warning "deprecated" }
 };
index 8438f7f..8e3e56b 100644 (file)
@@ -1,5 +1,6 @@
 // PR c++/51382
 // { dg-do compile }
+// { dg-options "-Wno-deprecated" }
 
 template< int Value >
 struct Base
index e8e0594..14bec68 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 8f0cbda..902773c 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 e7b0774..554f9d0 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 dece6f7..0c9b963 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 e3bff80..7760415 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "" }
+// { dg-options "-Wno-deprecated" }
 // GROUPS passed old-abort
 
 const bool FALSE = 0;
index 9d71041..e7065d9 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 baebfe4..7edc857 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 0297c10..c488ef7 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 c220d99..14f9ee0 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 f97ef81..e3d9d1f 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 cfef2df..a6e7021 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 1bc1ce3..3e68740 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 4752ac8..4176089 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 431ba41..a6364c5 100644 (file)
@@ -9,7 +9,7 @@ protected:
 class B : private A
 {
 protected:
-  A::i;
+  A::i; // { dg-warning "deprecated" }
 };
 
 struct C : public B {