Commit 5135baed by Fabien Chêne

crash25.C: Adjust.

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
parent b4cbc46c
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> 2011-12-31 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51397 PR c++/51397
......
...@@ -14887,9 +14887,14 @@ cp_parser_using_declaration (cp_parser* parser, ...@@ -14887,9 +14887,14 @@ cp_parser_using_declaration (cp_parser* parser,
tree decl; tree decl;
tree identifier; tree identifier;
tree qscope; tree qscope;
int oldcount = errorcount;
cp_token *diag_token = NULL;
if (access_declaration_p) if (access_declaration_p)
cp_parser_parse_tentatively (parser); {
diag_token = cp_lexer_peek_token (parser->lexer);
cp_parser_parse_tentatively (parser);
}
else else
{ {
/* Look for the `using' keyword. */ /* Look for the `using' keyword. */
...@@ -15000,7 +15005,13 @@ cp_parser_using_declaration (cp_parser* parser, ...@@ -15000,7 +15005,13 @@ cp_parser_using_declaration (cp_parser* parser,
/* Look for the final `;'. */ /* Look for the final `;'. */
cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); 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; return true;
} }
......
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> 2012-01-01 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/51502 PR fortran/51502
......
...@@ -9,7 +9,7 @@ struct A ...@@ -9,7 +9,7 @@ struct A
struct B : public A struct B : public A
{ {
A::d; A::d; // { dg-warning "deprecated" }
}; };
B b; B b;
...@@ -13,8 +13,8 @@ public: ...@@ -13,8 +13,8 @@ public:
class B : private A class B : private A
{ {
public: public:
A::i; A::i; // { dg-warning "deprecated" }
A::A1; A::A1; // { dg-warning "deprecated" }
}; };
void void
......
...@@ -7,5 +7,5 @@ struct A ...@@ -7,5 +7,5 @@ struct A
extern "C" struct B : A extern "C" struct B : A
{ {
A::i; A::i; // { dg-warning "deprecated" }
}; };
// PR c++/51382 // PR c++/51382
// { dg-do compile } // { dg-do compile }
// { dg-options "-Wno-deprecated" }
template< int Value > template< int Value >
struct Base struct Base
......
...@@ -13,6 +13,7 @@ template <typename T> struct C ...@@ -13,6 +13,7 @@ template <typename T> struct C
{ {
typedef typename A<T>::B X; typedef typename A<T>::B X;
X::Y; // { dg-error "not a base type" } X::Y; // { dg-error "not a base type" }
// { dg-warning "deprecated" "" { target *-*-* } 15 }
}; };
C<void> c; C<void> c;
...@@ -7,5 +7,5 @@ struct B { ...@@ -7,5 +7,5 @@ struct B {
template <typename T> class I : public B {}; template <typename T> class I : public B {};
template <typename T> class D : private I<T> { template <typename T> class D : private I<T> {
I<T>::B::foo; I<T>::B::foo; // { dg-warning "deprecated" }
}; };
...@@ -57,7 +57,7 @@ template <typename T> struct I <T, 0> : H <T> ...@@ -57,7 +57,7 @@ template <typename T> struct I <T, 0> : H <T>
I (int capacity) { allocateBuffer (capacity); } I (int capacity) { allocateBuffer (capacity); }
~I () { this->deallocateBuffer (buffer ()); } ~I () { this->deallocateBuffer (buffer ()); }
using H <T>::allocateBuffer; using H <T>::allocateBuffer;
H <T>::buffer; H <T>::buffer; // { dg-warning "deprecated" }
}; };
template <typename T, int cap = 0> struct J template <typename T, int cap = 0> struct J
{ {
......
...@@ -14,5 +14,5 @@ public: ...@@ -14,5 +14,5 @@ public:
class buff_head : private port_head { class buff_head : private port_head {
public: public:
static int rep; static int rep;
port_head::cap; port_head::cap; // { dg-warning "deprecated" }
}; };
// { dg-do assemble } // { dg-do assemble }
// { dg-options "" } // { dg-options "-Wno-deprecated" }
// GROUPS passed old-abort // GROUPS passed old-abort
const bool FALSE = 0; const bool FALSE = 0;
......
...@@ -8,10 +8,10 @@ public: ...@@ -8,10 +8,10 @@ public:
class B: private A { class B: private A {
public: public:
A::foo; A::foo; // { dg-warning "deprecated" }
}; };
void foo() { void foo() {
B b; B b;
b.foo (); // { dg-bogus "" } b.foo (); // { dg-bogus "" }
} }
...@@ -4,7 +4,7 @@ template <class T> struct A { T t; }; ...@@ -4,7 +4,7 @@ template <class T> struct A { T t; };
template <class T> class B: private T { template <class T> class B: private T {
public: public:
T::t; // { dg-bogus "" } doesn't recognize access decl T::t; // { dg-warning "deprecated" }
}; };
template class B<A<int> >; template class B<A<int> >;
...@@ -12,7 +12,7 @@ protected: ...@@ -12,7 +12,7 @@ protected:
class mel : private inh { class mel : private inh {
protected: protected:
int t; int t;
inh::myf; inh::myf; // { dg-warning "deprecated" }
}; };
class top_t : protected mel { class top_t : protected mel {
......
...@@ -20,7 +20,7 @@ class B : public A { ...@@ -20,7 +20,7 @@ class B : public A {
class C : private B { class C : private B {
public: public:
B::func; B::func; // { dg-warning "deprecated" }
}; };
class D { class D {
......
...@@ -19,7 +19,7 @@ public: ...@@ -19,7 +19,7 @@ public:
class B : private A { class B : private A {
protected: protected:
A::f; A::f; // { dg-warning "deprecated" }
public: public:
A::g; A::g; // { dg-warning "deprecated" }
}; };
...@@ -14,5 +14,7 @@ class X { ...@@ -14,5 +14,7 @@ class X {
class Y : private X { class Y : private X {
public: public:
void f(int); 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" }
}; };
...@@ -86,7 +86,7 @@ public: ...@@ -86,7 +86,7 @@ public:
void remove(T *p) { IListBase::remove(p); } void remove(T *p) { IListBase::remove(p); }
T *head() { return (T *)IListBase::head(); } T *head() { return (T *)IListBase::head(); }
T *get() { return (T *)IListBase::get(); } T *get() { return (T *)IListBase::get(); }
IListBase::empty; IListBase::empty; // { dg-warning "deprecated" }
friend class IListIter<T>; friend class IListIter<T>;
}; };
...@@ -136,8 +136,8 @@ class IListIter : private IListIterBase { ...@@ -136,8 +136,8 @@ class IListIter : private IListIterBase {
public: public:
IListIter(const IList<T> &list) : IListIterBase(list) { } IListIter(const IList<T> &list) : IListIterBase(list) { }
T *cur() { return (T *)IListIterBase::cur(); } T *cur() { return (T *)IListIterBase::cur(); }
IListIterBase::next; IListIterBase::next; // { dg-warning "deprecated" }
IListIterBase::done; IListIterBase::done; // { dg-warning "deprecated" }
}; };
......
...@@ -10,7 +10,7 @@ struct A ...@@ -10,7 +10,7 @@ struct A
struct B: private virtual A struct B: private virtual A
{ {
A::f; A::f; // { dg-warning "deprecated" }
}; };
struct C: private virtual A, public B struct C: private virtual A, public B
......
...@@ -9,7 +9,7 @@ protected: ...@@ -9,7 +9,7 @@ protected:
class B : private A class B : private A
{ {
protected: protected:
A::i; A::i; // { dg-warning "deprecated" }
}; };
struct C : public B { struct C : public B {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment