Commit d0488d17 by Janis Johnson Committed by Janis Johnson

re PR testsuite/25241 ([C++] DejaGNU does not distinguish between errors and warnings)

	PR testsuite/25241
	* testsuite/g++.dg/charset/attribute2.c: Replace dg-error with
	dg-warning or vice versa.
	* testsuite/g++.dg/conversion/dr195.C: Ditto.
	* testsuite/g++.dg/cpp0x/variadic60.C: Ditto.
	* testsuite/g++.dg/expr/cast2.C: Ditto.
	* testsuite/g++.dg/ext/anon-struct4.C: Ditto.
	* testsuite/g++.dg/ext/member-attr.C: Ditto.
	* testsuite/g++.dg/ext/utf-array.C: Ditto.
	* testsuite/g++.dg/ext/utf-array-short-wchar.C: Ditto.
	* testsuite/g++.dg/ext/utf-typedef-cxx0x.C: Ditto.
	* testsuite/g++.dg/ext/visibility/redecl1.C: Ditto.
	* testsuite/g++.dg/ext/visibility/warn4.C: Ditto.
	* testsuite/g++.dg/parse/defarg11.C: Ditto.
	* testsuite/g++.dg/template/error17.C: Ditto.
	* testsuite/g++.dg/warn/pedantic2.C: Ditto.
	* testsuite/g++.dg/warn/pr21983.C: Ditto.
	* testsuite/g++.dg/warn/return-reference2.C: Ditto.
	* testsuite/g++.old-deja/g++.bob/inherit1.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/crash13.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/crash17.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/crash52.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/crash55.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/enum7.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/operators4.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/template17.C: Ditto.
	* testsuite/g++.old-deja/g++.brendan/warnings1.C: Ditto.
	* testsuite/g++.old-deja/g++.bugs/900205_03.C: Ditto.
	* testsuite/g++.old-deja/g++.bugs/900227_01.C: Ditto.
	* testsuite/g++.old-deja/g++.ext/arrnew.C: Ditto.
	* testsuite/g++.old-deja/g++.ext/attrib4.C: Ditto.
	* testsuite/g++.old-deja/g++.jason/cond.C: Ditto.
	* testsuite/g++.old-deja/g++.jason/operator.C: Ditto.
	* testsuite/g++.old-deja/g++.jason/report.C: Ditto.
	* testsuite/g++.old-deja/g++.law/friend5.C: Ditto.
	* testsuite/g++.old-deja/g++.law/temps1.C: Ditto.
	* testsuite/g++.old-deja/g++.law/union4.C: Ditto.
	* testsuite/g++.old-deja/g++.martin/pure1.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/empty.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/for2.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/misc9.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/p10769b.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/p2855.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/p3060c.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/p700.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/p9732c.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/pmf6.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/warn1.C: Ditto.
	* testsuite/g++.old-deja/g++.mike/warn5.C: Ditto.
	* testsuite/g++.old-deja/g++.niklas/t141.C: Ditto.
	* testsuite/g++.old-deja/g++.other/cast6.C: Ditto.
	* testsuite/g++.old-deja/g++.other/cond5.C: Ditto.
	* testsuite/g++.old-deja/g++.other/conv8.C: Ditto.
	* testsuite/g++.old-deja/g++.other/decl5.C: Ditto.
	* testsuite/g++.old-deja/g++.other/delete2.C: Ditto.
	* testsuite/g++.old-deja/g++.other/delete4.C: Ditto.
	* testsuite/g++.old-deja/g++.other/linkage1.C: Ditto.
	* testsuite/g++.old-deja/g++.other/ptrmem8.C: Ditto.
	* testsuite/g++.old-deja/g++.other/typename1.C: Ditto.
	* testsuite/g++.old-deja/g++.pt/typename14.C: Ditto.
	* testsuite/g++.old-deja/g++.pt/typename4.C: Ditto.
	* testsuite/g++.old-deja/g++.pt/typename5.C: Ditto.
	* testsuite/g++.old-deja/g++.pt/typename7.C: Ditto.

From-SVN: r140405
parent 1edd1a83
2008-09-16 Janis Johnson <janis187@us.ibm.com>
PR testsuite/25241
* testsuite/g++.dg/charset/attribute2.c: Replace dg-error with
dg-warning or vice versa.
* testsuite/g++.dg/conversion/dr195.C: Ditto.
* testsuite/g++.dg/cpp0x/variadic60.C: Ditto.
* testsuite/g++.dg/expr/cast2.C: Ditto.
* testsuite/g++.dg/ext/anon-struct4.C: Ditto.
* testsuite/g++.dg/ext/member-attr.C: Ditto.
* testsuite/g++.dg/ext/utf-array.C: Ditto.
* testsuite/g++.dg/ext/utf-array-short-wchar.C: Ditto.
* testsuite/g++.dg/ext/utf-typedef-cxx0x.C: Ditto.
* testsuite/g++.dg/ext/visibility/redecl1.C: Ditto.
* testsuite/g++.dg/ext/visibility/warn4.C: Ditto.
* testsuite/g++.dg/parse/defarg11.C: Ditto.
* testsuite/g++.dg/template/error17.C: Ditto.
* testsuite/g++.dg/warn/pedantic2.C: Ditto.
* testsuite/g++.dg/warn/pr21983.C: Ditto.
* testsuite/g++.dg/warn/return-reference2.C: Ditto.
* testsuite/g++.old-deja/g++.bob/inherit1.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/crash13.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/crash17.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/crash52.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/crash55.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/enum7.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/operators4.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/template17.C: Ditto.
* testsuite/g++.old-deja/g++.brendan/warnings1.C: Ditto.
* testsuite/g++.old-deja/g++.bugs/900205_03.C: Ditto.
* testsuite/g++.old-deja/g++.bugs/900227_01.C: Ditto.
* testsuite/g++.old-deja/g++.ext/arrnew.C: Ditto.
* testsuite/g++.old-deja/g++.ext/attrib4.C: Ditto.
* testsuite/g++.old-deja/g++.jason/cond.C: Ditto.
* testsuite/g++.old-deja/g++.jason/operator.C: Ditto.
* testsuite/g++.old-deja/g++.jason/report.C: Ditto.
* testsuite/g++.old-deja/g++.law/friend5.C: Ditto.
* testsuite/g++.old-deja/g++.law/temps1.C: Ditto.
* testsuite/g++.old-deja/g++.law/union4.C: Ditto.
* testsuite/g++.old-deja/g++.martin/pure1.C: Ditto.
* testsuite/g++.old-deja/g++.mike/empty.C: Ditto.
* testsuite/g++.old-deja/g++.mike/for2.C: Ditto.
* testsuite/g++.old-deja/g++.mike/misc9.C: Ditto.
* testsuite/g++.old-deja/g++.mike/p10769b.C: Ditto.
* testsuite/g++.old-deja/g++.mike/p2855.C: Ditto.
* testsuite/g++.old-deja/g++.mike/p3060c.C: Ditto.
* testsuite/g++.old-deja/g++.mike/p700.C: Ditto.
* testsuite/g++.old-deja/g++.mike/p9732c.C: Ditto.
* testsuite/g++.old-deja/g++.mike/pmf6.C: Ditto.
* testsuite/g++.old-deja/g++.mike/warn1.C: Ditto.
* testsuite/g++.old-deja/g++.mike/warn5.C: Ditto.
* testsuite/g++.old-deja/g++.niklas/t141.C: Ditto.
* testsuite/g++.old-deja/g++.other/cast6.C: Ditto.
* testsuite/g++.old-deja/g++.other/cond5.C: Ditto.
* testsuite/g++.old-deja/g++.other/conv8.C: Ditto.
* testsuite/g++.old-deja/g++.other/decl5.C: Ditto.
* testsuite/g++.old-deja/g++.other/delete2.C: Ditto.
* testsuite/g++.old-deja/g++.other/delete4.C: Ditto.
* testsuite/g++.old-deja/g++.other/linkage1.C: Ditto.
* testsuite/g++.old-deja/g++.other/ptrmem8.C: Ditto.
* testsuite/g++.old-deja/g++.other/typename1.C: Ditto.
* testsuite/g++.old-deja/g++.pt/typename14.C: Ditto.
* testsuite/g++.old-deja/g++.pt/typename4.C: Ditto.
* testsuite/g++.old-deja/g++.pt/typename5.C: Ditto.
* testsuite/g++.old-deja/g++.pt/typename7.C: Ditto.
2008-09-16 Jakub Jelinek <jakub@redhat.com> 2008-09-16 Jakub Jelinek <jakub@redhat.com>
Adam Nemet <anemet@caviumnetworks.com> Adam Nemet <anemet@caviumnetworks.com>
......
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
/* { dg-do compile } /* { dg-do compile }
{ dg-require-iconv "IBM1047" } { dg-require-iconv "IBM1047" }
*/ */
int foo __attribute__ ((walrus)); /* { dg-error "walrus" "ignored" } */ int foo __attribute__ ((walrus)); /* { dg-warning "walrus" "ignored" } */
char x[] = "foobar"; char x[] = "foobar";
...@@ -22,8 +22,8 @@ void foo () ...@@ -22,8 +22,8 @@ void foo ()
pv = reinterpret_cast <PV>(pf); // { dg-warning "casting between" "" } pv = reinterpret_cast <PV>(pf); // { dg-warning "casting between" "" }
/* the following two might or might not be ok with 195. */ /* the following two might or might not be ok with 195. */
pf = reinterpret_cast <PF>(po); // { dg-error "casting between" "" } pf = reinterpret_cast <PF>(po); // { dg-warning "casting between" "" }
po = reinterpret_cast <PO>(pf); // { dg-error "casting between" "" } po = reinterpret_cast <PO>(pf); // { dg-warning "casting between" "" }
/* These will never be ok, as they are implicit. */ /* These will never be ok, as they are implicit. */
pv = pf; // { dg-error "invalid conversion" "" } pv = pf; // { dg-error "invalid conversion" "" }
......
template<typename... Args> class tuple; // { dg-warning "variadic templates" } template<typename... Args> class tuple; // { dg-error "variadic templates" }
void (*p)(); void (*p)();
void f() { void f() {
(void *)p; // { dg-error "" } (void *)p; // { dg-warning "forbids cast" }
} }
// PR c++/14401 // PR c++/14401
struct { struct { int& i ; } bar ; } foo ; // { dg-error "" } struct { struct { int& i ; } bar ; } foo ; // { dg-error "uninitialized" "uninit" }
// { dg-warning "anonymous" "anon" { target *-*-* } 3 }
...@@ -9,6 +9,6 @@ ...@@ -9,6 +9,6 @@
class T { class T {
public: public:
__attribute__ ((garbage1)) void member1(int) {} /* { dg-error "'garbage1' attribute directive ignored" "" } */ __attribute__ ((garbage1)) void member1(int) {} /* { dg-warning "'garbage1' attribute directive ignored" "" } */
void __attribute__ ((garbage2)) member2(int) {} /* { dg-error "'garbage2' attribute directive ignored" "" } */ void __attribute__ ((garbage2)) member2(int) {} /* { dg-warning "'garbage2' attribute directive ignored" "" } */
}; };
...@@ -13,9 +13,9 @@ const char16_t s16_1[] = u"ab"; ...@@ -13,9 +13,9 @@ const char16_t s16_1[] = u"ab";
const char16_t s16_2[] = U"ab"; /* { dg-error "from incompatible" } */ const char16_t s16_2[] = U"ab"; /* { dg-error "from incompatible" } */
const char16_t s16_3[] = L"ab"; /* { dg-error "from incompatible" } */ const char16_t s16_3[] = L"ab"; /* { dg-error "from incompatible" } */
const char16_t s16_4[0] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_4[0] = u"ab"; /* { dg-error "chars is too long" } */
const char16_t s16_5[1] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_5[1] = u"ab"; /* { dg-error "chars is too long" } */
const char16_t s16_6[2] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_6[2] = u"ab"; /* { dg-error "chars is too long" } */
const char16_t s16_7[3] = u"ab"; const char16_t s16_7[3] = u"ab";
const char16_t s16_8[4] = u"ab"; const char16_t s16_8[4] = u"ab";
...@@ -24,9 +24,9 @@ const char32_t s32_1[] = u"ab"; /* { dg-error "from incompatible" } */ ...@@ -24,9 +24,9 @@ const char32_t s32_1[] = u"ab"; /* { dg-error "from incompatible" } */
const char32_t s32_2[] = U"ab"; const char32_t s32_2[] = U"ab";
const char32_t s32_3[] = L"ab"; /* { dg-error "from incompatible" } */ const char32_t s32_3[] = L"ab"; /* { dg-error "from incompatible" } */
const char32_t s32_4[0] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_4[0] = U"ab"; /* { dg-error "chars is too long" } */
const char32_t s32_5[1] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_5[1] = U"ab"; /* { dg-error "chars is too long" } */
const char32_t s32_6[2] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_6[2] = U"ab"; /* { dg-error "chars is too long" } */
const char32_t s32_7[3] = U"ab"; const char32_t s32_7[3] = U"ab";
const char32_t s32_8[4] = U"ab"; const char32_t s32_8[4] = U"ab";
......
...@@ -13,9 +13,9 @@ const char16_t s16_1[] = u"ab"; ...@@ -13,9 +13,9 @@ const char16_t s16_1[] = u"ab";
const char16_t s16_2[] = U"ab"; /* { dg-error "from incompatible" } */ const char16_t s16_2[] = U"ab"; /* { dg-error "from incompatible" } */
const char16_t s16_3[] = L"ab"; /* { dg-error "from incompatible" } */ const char16_t s16_3[] = L"ab"; /* { dg-error "from incompatible" } */
const char16_t s16_4[0] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_4[0] = u"ab"; /* { dg-error "chars is too long" } */
const char16_t s16_5[1] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_5[1] = u"ab"; /* { dg-error "chars is too long" } */
const char16_t s16_6[2] = u"ab"; /* { dg-warning "chars is too long" } */ const char16_t s16_6[2] = u"ab"; /* { dg-error "chars is too long" } */
const char16_t s16_7[3] = u"ab"; const char16_t s16_7[3] = u"ab";
const char16_t s16_8[4] = u"ab"; const char16_t s16_8[4] = u"ab";
...@@ -24,9 +24,9 @@ const char32_t s32_1[] = u"ab"; /* { dg-error "from incompatible" } */ ...@@ -24,9 +24,9 @@ const char32_t s32_1[] = u"ab"; /* { dg-error "from incompatible" } */
const char32_t s32_2[] = U"ab"; const char32_t s32_2[] = U"ab";
const char32_t s32_3[] = L"ab"; /* { dg-error "from incompatible" } */ const char32_t s32_3[] = L"ab"; /* { dg-error "from incompatible" } */
const char32_t s32_4[0] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_4[0] = U"ab"; /* { dg-error "chars is too long" } */
const char32_t s32_5[1] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_5[1] = U"ab"; /* { dg-error "chars is too long" } */
const char32_t s32_6[2] = U"ab"; /* { dg-warning "chars is too long" } */ const char32_t s32_6[2] = U"ab"; /* { dg-error "chars is too long" } */
const char32_t s32_7[3] = U"ab"; const char32_t s32_7[3] = U"ab";
const char32_t s32_8[4] = U"ab"; const char32_t s32_8[4] = U"ab";
......
/* Contributed by Kris Van Hees <kris.van.hees@oracle.com> */ /* Contributed by Kris Van Hees <kris.van.hees@oracle.com> */
/* Ensure that a typedef to char16_t/char32_t issues a warning in c++0x. */ /* Ensure that a typedef to char16_t/char32_t issues an error in c++0x. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-std=c++0x" } */ /* { dg-options "-std=c++0x" } */
typedef short unsigned int char16_t; /* { dg-warning "redeclaration" } */ typedef short unsigned int char16_t; /* { dg-error "redeclaration" } */
typedef unsigned int char32_t; /* { dg-warning "redeclaration" } */ typedef unsigned int char32_t; /* { dg-error "redeclaration" } */
// Test that we complain about redeclaration with different visibility // Test that we complain about redeclaration with different visibility
struct __attribute((visibility("hidden"))) B; struct __attribute((visibility("hidden"))) B;
struct __attribute((visibility("default"))) B; // { dg-warning "visibility" } struct __attribute((visibility("default"))) B; // { dg-error "visibility" }
__attribute ((visibility ("hidden"))) void f(); // { dg-warning "previous" } __attribute ((visibility ("hidden"))) void f(); // { dg-warning "previous" }
__attribute ((visibility ("default"))) void f(); // { dg-warning "visibility" } __attribute ((visibility ("default"))) void f(); // { dg-warning "visibility" }
// Error if we try to give an instantiation visibility after it's already // Warn if we try to give an instantiation visibility after it's already
// been instantiated. // been instantiated.
// { dg-require-visibility "" } // { dg-require-visibility "" }
...@@ -7,4 +7,4 @@ template <class T> struct A { void f (T); }; ...@@ -7,4 +7,4 @@ template <class T> struct A { void f (T); };
template <class T> void A<T>::f (T) { } template <class T> void A<T>::f (T) { }
A<double> ad; A<double> ad;
template struct __attribute ((visibility ("hidden"))) A<double>; // { dg-error "already defined" } template struct __attribute ((visibility ("hidden"))) A<double>; // { dg-warning "already defined" }
...@@ -4,6 +4,6 @@ ...@@ -4,6 +4,6 @@
class foo { class foo {
public: public:
void operator& (int = 1); // { dg-error "default argument" } void operator& (int = 1); // { dg-error "default argument" }
void operator++ (int = 2); // { dg-error "default argument" } void operator++ (int = 2); // { dg-warning "default argument" }
void operator-- (int = 3); // { dg-error "default argument" } void operator-- (int = 3); // { dg-warning "default argument" }
}; };
...@@ -4,5 +4,7 @@ template <typename T> ...@@ -4,5 +4,7 @@ template <typename T>
void void
foo() foo()
{ {
union { struct { }; }; // { dg-error "" } union { struct { }; }; // { dg-error "prohibits anonymous struct" "anon" }
// { dg-error "not inside" "not inside" { target *-*-* } 7 }
// { dg-warning "no members" "no members" { target *-*-* } 7 }
} }
...@@ -5,6 +5,6 @@ class foo ...@@ -5,6 +5,6 @@ class foo
foo() {}; foo() {};
void bar() {}; void bar() {};
foo(int) {};; // { dg-error "extra" } foo(int) {};; // { dg-warning "extra" }
void bar(int) {};; // { dg-error "extra" } void bar(int) {};; // { dg-warning "extra" }
}; };
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
struct B { virtual void foo () = 0; }; struct B { virtual void foo () = 0; };
struct D1 : public virtual B { virtual void foo () {} }; struct D1 : public virtual B { virtual void foo () {} };
struct D2 : public virtual B { virtual void foo () {} }; struct D2 : public virtual B { virtual void foo () {} };
struct D : public D1, public D2 { }; // { dg-warning "no unique final overrider" } struct D : public D1, public D2 { }; // { dg-error "no unique final overrider" }
...@@ -10,12 +10,12 @@ public: ...@@ -10,12 +10,12 @@ public:
int &f() int &f()
{ {
A a; // { dg-error "local" } A a; // { dg-warning "local" }
return a.second; return a.second;
} }
int &g() int &g()
{ {
int ar[42]; // { dg-error "local" } int ar[42]; // { dg-warning "local" }
return ar[20]; return ar[20];
} }
...@@ -11,7 +11,8 @@ public: ...@@ -11,7 +11,8 @@ public:
class B : public A { class B : public A {
public: public:
char* m1 () { C::m1(); return ""; } // { dg-error "" } char* m1 () { C::m1(); return ""; } // { dg-error "cannot call" }
// { dg-warning "deprecated" "depr" { target *-*-* } 14 }
}; };
int main () { int main () {
......
...@@ -31,7 +31,7 @@ gen_op Spul_U_axis() ...@@ -31,7 +31,7 @@ gen_op Spul_U_axis()
{ {
gen_op U1; gen_op U1;
U1 = Fe(); U1 = Fe();
} // { dg-error "" } reaches end of non-void function } // { dg-warning "no return" } reaches end of non-void function
int int
main () {} main () {}
...@@ -30,6 +30,6 @@ class GnWidget : public GnObject { ...@@ -30,6 +30,6 @@ class GnWidget : public GnObject {
virtual ~GnWidget(); virtual ~GnWidget();
}; };
class GnOptionGroup : public GnObject, public GnWidget {// { dg-error "" } warning class GnOptionGroup : public GnObject, public GnWidget {// { dg-warning "inaccessible" }
}; };
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
class A { class A {
public: public:
friend A f(A &a);// { dg-error "" } ambiguates.* friend A f(A &a);// { dg-error "ambiguates" }
}; };
A &f(A &a) {// { dg-error "" } new decl.* A &f(A &a) {// { dg-error "new decl" }
std::cout << "Blah\n"; std::cout << "Blah\n";
} // { dg-error "no return statement" } } // { dg-warning "no return statement" }
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
int& f(int x) // { dg-error "new declaration" } int& f(int x) // { dg-error "new declaration" }
{ {
int local; // { dg-error "reference to local" } int local; // { dg-warning "reference to local" }
local = x+2; local = x+2;
......
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
enum color { red, green, blue, orange, brown }; enum color { red, green, blue, orange, brown };
struct s { struct s {
enum color field:2; // { dg-error "" } too small enum color field:2; // { dg-warning "too small" }
}; };
...@@ -54,11 +54,11 @@ int main () ...@@ -54,11 +54,11 @@ int main ()
if (test3 (vp)) if (test3 (vp))
return fail (); return fail ();
ptr_to_method_of_char p2 = &base::method; ptr_to_method_of_char p2 = &base::method;
vp = (void*) p2; // { dg-error "" } vp = (void*) p2; // { dg-warning "converting" }
if (test4 (vp)) if (test4 (vp))
return fail (); return fail ();
ptr_to_method_of_float p3 = &base::method; ptr_to_method_of_float p3 = &base::method;
vp = (void*) p3; // { dg-error "" } vp = (void*) p3; // { dg-warning "converting" }
if (test5 (vp)) if (test5 (vp))
return fail (); return fail ();
...@@ -83,7 +83,7 @@ int test3 (void* vp) ...@@ -83,7 +83,7 @@ int test3 (void* vp)
int test4 (void* vp) int test4 (void* vp)
{ {
char ch = 'x'; char ch = 'x';
ptr_to_method_of_char p = (ptr_to_method_of_char) vp; // { dg-error "" } bad type conversion ptr_to_method_of_char p = (ptr_to_method_of_char) vp; // { dg-error "invalid cast" } bad type conversion
return ((base_ptr->*p)(ch) != 9904); return ((base_ptr->*p)(ch) != 9904);
} }
...@@ -91,7 +91,7 @@ int test4 (void* vp) ...@@ -91,7 +91,7 @@ int test4 (void* vp)
int test5 (void* vp) int test5 (void* vp)
{ {
float flt = 9.9; float flt = 9.9;
ptr_to_method_of_float p = (ptr_to_method_of_float) vp; // { dg-error "" } bad type conversion ptr_to_method_of_float p = (ptr_to_method_of_float) vp; // { dg-error "invalid cast" } bad type conversion
if ((base_ptr->*p)(flt) != 9905) { if ((base_ptr->*p)(flt) != 9905) {
return 1; return 1;
......
...@@ -8,5 +8,8 @@ public: ...@@ -8,5 +8,8 @@ public:
static unsigned sequence_number; static unsigned sequence_number;
}; };
const Regex NDAMName<'L'>::pattern("^[Ll](.*)$", 1);// { dg-error "" } type/value.* const Regex NDAMName<'L'>::pattern("^[Ll](.*)$", 1);// { dg-error "type/value mismatch" "mismatch" }
unsigned NDAMName<'L'>::sequence_number = 0;// { dg-error "" } type/value // { dg-error "expected a type" "expected" { target *-*-* } 11 }
// { dg-warning "deprecated" "depr" { target *-*-* } 11 }
unsigned NDAMName<'L'>::sequence_number = 0;// { dg-error "type/value mismatch" "mismatch" }
// { dg-error "expected a type" "exp" { target *-*-* } 14 }
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
// { dg-options "-Wctor-dtor-privacy" } // { dg-options "-Wctor-dtor-privacy" }
// GROUPS passed warnings // GROUPS passed warnings
// there should be a warning about foo only defining private methods // there should be a warning about foo only defining private methods
class foo { // { dg-error "" } .* class foo { // { dg-warning "private" }
int bar(); int bar();
}; };
...@@ -18,18 +18,18 @@ ...@@ -18,18 +18,18 @@
struct struct00 { }; struct struct00 { };
int global_function_0 () { int global_function_0 () {
} // { dg-error "" } } // { dg-warning "no return" }
struct00 global_function_1 () { struct00 global_function_1 () {
} // { dg-error "" } } // { dg-warning "no return" }
struct struct0 { struct struct0 {
int struct0_member_function_0 () { int struct0_member_function_0 () {
} // { dg-error "" } } // { dg-warning "no return" }
struct0 struct0_member_function_1 () { struct0 struct0_member_function_1 () {
} // { dg-error "" } } // { dg-warning "no return" }
}; };
struct struct1 { struct struct1 {
...@@ -41,9 +41,9 @@ struct struct1 { ...@@ -41,9 +41,9 @@ struct struct1 {
}; };
int struct1_member_function_0 () { int struct1_member_function_0 () {
} // { dg-error "" } } // { dg-warning "no return" }
struct1 struct1::struct1_member_function_1 () { struct1 struct1::struct1_member_function_1 () {
} // { dg-error "" } } // { dg-warning "no return" }
int main () { return 0; } int main () { return 0; }
...@@ -33,7 +33,9 @@ ...@@ -33,7 +33,9 @@
int main (); int main ();
short s = (short) &main; // { dg-warning "" "" { xfail h8*-*-* xstormy16-*-* } } small integer short s = (short) &main; // { dg-error "taking address" "addr" { xfail h8*-*-* xstormy16-*-* } }
char c = (char) &main; // { dg-warning "" } small integer // { dg-error "loses precision" "lose" { xfail h8*-*-* xstormy16-*-* } 36 }
char c = (char) &main; // { dg-error "taking address" }
// { dg-error "loses precision" "lose" { target *-*-* } 38 }
int main () { return 0; } int main () { return 0; }
...@@ -3,5 +3,6 @@ ...@@ -3,5 +3,6 @@
// PRMS Id: 4992 // PRMS Id: 4992
int *f(){ int *f(){
return new int[1] = { 1 }; // { dg-error "" } removed return new int[1] = { 1 }; // { dg-error "lvalue" "err" }
// { dg-warning "extended init" "warn" { target *-*-* } 6 }
} }
...@@ -7,18 +7,18 @@ ...@@ -7,18 +7,18 @@
#define PF __attribute__ ((format (printf, 1, 2))) #define PF __attribute__ ((format (printf, 1, 2)))
struct A { struct A {
static PF void f (char *, ...); static PF void f (const char *, ...);
friend PF void g (char *, ...); static PF void g (const char *, ...) { }
static void test (); static void test ();
}; };
void PF h (char *, ...); void PF h (const char *, ...);
void PF k (char *, ...) { } void PF k (const char *, ...) { }
void A::test () void A::test ()
{ {
f ("%f", 42); // { dg-warning "" } f ("%f", 42); // { dg-warning "argument 2" }
g ("%f", 42); // { dg-warning "" } g ("%f", 42); // { dg-warning "argument 2" }
h ("%f", 42); // { dg-warning "" } h ("%f", 42); // { dg-warning "argument 2" }
k ("%f", 42); // { dg-warning "" } k ("%f", 42); // { dg-warning "argument 2" }
} }
...@@ -17,14 +17,14 @@ int main() ...@@ -17,14 +17,14 @@ int main()
char j; char j;
} }
while (int i = 0) // { dg-error "" } while (int i = 0) // { dg-error "previously" }
{ {
int i; // { dg-error "" } int i; // { dg-error "redeclaration" }
} }
for (; int i = 0; ) // { dg-error "" } for (; int i = 0; ) // { dg-error "previously" }
{ {
int i; // { dg-error "" } int i; // { dg-error "redeclaration" }
} }
switch (int i = 0) // { dg-error "" "" { xfail *-*-* } } switch (int i = 0) // { dg-error "" "" { xfail *-*-* } }
...@@ -33,12 +33,14 @@ int main() ...@@ -33,12 +33,14 @@ int main()
int i; // { dg-error "" "" { xfail *-*-* } } int i; // { dg-error "" "" { xfail *-*-* } }
} }
if (struct A { operator int () { return 1; } } *foo = new A) // { dg-error "" } if (struct A { operator int () { return 1; } } *foo = new A) // { dg-error "defined" }
; ;
A bar; // { dg-error "" } A bar; // { dg-error "not declared" "decl" }
// { dg-error "expected" "exp" { target *-*-* } 39 }
if (enum A { one, two, three } foo = one) // { dg-error "" } if (enum A { one, two, three } foo = one) // { dg-error "defined" "def" }
// { dg-error "declared" "decl" { target *-*-* } 42 }
; ;
struct B { operator int () { return 2; } }; struct B { operator int () { return 2; } };
...@@ -46,10 +48,11 @@ int main() ...@@ -46,10 +48,11 @@ int main()
if (struct B * foo = new B) if (struct B * foo = new B)
; ;
if (int f () = 1) // { dg-error "" } if (int f () = 1) // { dg-warning "extern" "extern" }
// { dg-error "is initialized like a variable" "var" { target *-*-* } 51 }
; ;
if (int a[2] = {1, 2}) // { dg-error "" } if (int a[2] = {1, 2}) // { dg-error "extended init" }
; ;
} }
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
typedef __SIZE_TYPE__ size_t; typedef __SIZE_TYPE__ size_t;
struct A { struct A {
int operator?:(int a, int b); // { dg-warning "" } int operator?:(int a, int b); // { dg-error "expected type-specifier" }
static int operator()(int a); // { dg-error "" } must be nonstatic static int operator()(int a); // { dg-error "must be a nonstatic member" }
static int operator+(A,A); // { dg-error "" } must be nonstatic static int operator+(A,A); // { dg-error "either a non-static member" }
int operator+(int a, int b = 1); // { dg-error "" } two errors on this line int operator+(int a, int b = 1); // { dg-error "either zero or one" }
int operator++(char); // { dg-error "" } must take 'int' int operator++(char); // { dg-error "must take 'int'" }
void operator delete (void *); void operator delete (void *);
void operator delete (void *, unsigned long); void operator delete (void *, unsigned long);
}; };
...@@ -23,9 +23,10 @@ struct B { ...@@ -23,9 +23,10 @@ struct B {
B * operator->(); B * operator->();
}; };
int operator-(int a, int b); // { dg-error "" } no class argument int operator-(int a, int b); // { dg-error "argument of class or" }
void * operator new (A a); // { dg-error "" } invalid first argument void * operator new (A a); // { dg-error "first parameter" }
void operator delete (A a); // { dg-error "" } ditto void operator delete (A a); // { dg-error "first parameter" }
char * operator char * (int); // { dg-error "" } return value, nonmember char * operator char * (int); // { dg-error "return type" "ret" }
// { dg-error "nonstatic member function" "mem" { target *-*-* } 31 }
...@@ -56,7 +56,7 @@ bar2 baz (X::Y y) // { dg-error "" } in this context ...@@ -56,7 +56,7 @@ bar2 baz (X::Y y) // { dg-error "" } in this context
bar2 wa [5]; bar2 wa [5];
wa[0] = baz(f); wa[0] = baz(f);
undef2 (1); // { dg-error "" } implicit declaration undef2 (1); // { dg-error "" } implicit declaration
} // { dg-error "no return statement" } } // { dg-warning "no return statement" }
int ninny () int ninny ()
{ {
...@@ -71,4 +71,4 @@ int ninny () ...@@ -71,4 +71,4 @@ int ninny ()
int darg (char X::*p) int darg (char X::*p)
{ {
undef3 (1); // { dg-error "" } implicit declaration undef3 (1); // { dg-error "" } implicit declaration
} // { dg-error "no return statement" } } // { dg-warning "no return statement" }
...@@ -16,10 +16,10 @@ ...@@ -16,10 +16,10 @@
int good_friend(int) int good_friend(int)
{ {
obj.parts = 0; obj.parts = 0;
} // { dg-error "" } non-void } // { dg-warning "non-void" }
int bad_friend() int bad_friend()
{ {
obj.parts = 0; obj.parts = 0;
} // { dg-error "" } non-void } // { dg-warning "non-void" }
...@@ -15,4 +15,5 @@ struct cookie ...@@ -15,4 +15,5 @@ struct cookie
cookie ( foo * x) { v=x; } cookie ( foo * x) { v=x; }
}; };
cookie cat(&foo("apabepa"));// { dg-error "" } .* cookie cat(&foo("apabepa"));// { dg-warning "deprecated conversion" "dep" }
// { dg-warning "taking address of temporary" "add" { target *-*-* } 18 }
...@@ -10,4 +10,4 @@ static union { ...@@ -10,4 +10,4 @@ static union {
struct SS { struct SS {
int ss; int ss;
}; };
};// { dg-error "" } .* };// { dg-warning "no members" }
...@@ -3,6 +3,6 @@ class A ...@@ -3,6 +3,6 @@ class A
{ {
public: public:
virtual void f(void) = 0; // pure virtual function. virtual void f(void) = 0; // pure virtual function.
A() {f();} // { dg-error "" } called in a constructor A() {f();} // { dg-warning "const" } called in a constructor
~A() {f();} // { dg-error "" } called in a destructor ~A() {f();} // { dg-warning "destr" } called in a destructor
}; };
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
#define NOPE #define NOPE
void foo() { void foo() {
while (1); /* { dg-error "suggest a space before " } */ while (1); /* { dg-warning "suggest a space before " } */
{ {
} }
for (;;); /* { dg-error "suggest a space before " } */ for (;;); /* { dg-warning "suggest a space before " } */
{ {
} }
while (1) while (1)
......
...@@ -3,17 +3,20 @@ ...@@ -3,17 +3,20 @@
void foo() { void foo() {
for (class C {};;) for (class C {};;)
; ;
C c; // { dg-error "" } C c; // { dg-error "declared" "decl" }
// { dg-error "expected" "exp" { target *-*-* } 6 }
} }
void bar() { void bar() {
for (enum E {num};;) for (enum E {num};;)
; ;
E e; // { dg-error "" } E e; // { dg-error "declared" "decl" }
// { dg-error "expected" "exp" { target *-*-* } 13 }
} }
void bee () { void bee () {
int i = 0; int i = 0;
for (int fun() = 0; i != 2; ++i) { // { dg-error "" } for (int fun() = 0; i != 2; ++i) { // { dg-warning "extern" "extern" }
// { dg-error "initialized" "init" { target *-*-* } 19 }
} }
} }
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
// GROUPS passed qualifiers // GROUPS passed qualifiers
class bee { class bee {
public: public:
int bee::bar; // { dg-warning "" } there is an extra bee:: here int bee::bar; // { dg-error "extra" } there is an extra bee:: here
}; };
class foo { class foo {
public: public:
int bee::bar; // { dg-error "" } you cannot do this int bee::bar; // { dg-error "not derived" } you cannot do this
int me(); int me();
}; };
...@@ -17,10 +17,11 @@ public: ...@@ -17,10 +17,11 @@ public:
void A::main() { void A::main() {
void (B::*mPtrB)(B*); void (B::*mPtrB)(B*);
(*(void (*)(A*))PMF2PF(mPtrB))(&b); // { dg-error "" } (*(void (*)(A*))PMF2PF(mPtrB))(&b); // { dg-error "argument passing" }
// { dg-warning "convert" "warn" { target *-*-* } 20 }
} }
int main() { int main() {
void (A::*mPtr)() = &A::f1a; void (A::*mPtr)() = &A::f1a;
(*(void (*)(A*))PMF2PF(mPtr))(&a); // { dg-error "" } (*(void (*)(A*))PMF2PF(mPtr))(&a); // { dg-warning "convert" }
} }
...@@ -16,6 +16,6 @@ Ctest::operator const char *() const ...@@ -16,6 +16,6 @@ Ctest::operator const char *() const
int main() int main()
{ {
Ctest obj; Ctest obj;
char* temp = (char *)obj; // { dg-warning "" } char* temp = (char *)obj; // { dg-error "invalid cast" }
temp[0] = '\0'; temp[0] = '\0';
} }
...@@ -11,7 +11,7 @@ class Foo ...@@ -11,7 +11,7 @@ class Foo
operator int (); operator int ();
}; };
int Foo::operator int() { return x; } // { dg-warning "" } can't specify return type int Foo::operator int() { return x; } // { dg-error "return" } can't specify return type
Foo foo(10, 11); Foo foo(10, 11);
......
...@@ -223,7 +223,7 @@ inline void Int::operator >>=(const int b) ...@@ -223,7 +223,7 @@ inline void Int::operator >>=(const int b)
{ rep >>= b; ; } { rep >>= b; ; }
inline int& operator = (int& a, const Int & b) // { dg-warning "" } inline int& operator = (int& a, const Int & b) // { dg-error "" }
{ a = b.Int::val(); return a;} { a = b.Int::val(); return a;}
inline int& operator += (int& a, const Int & b) inline int& operator += (int& a, const Int & b)
{ a += b.Int::val(); return a; } { a += b.Int::val(); return a; }
...@@ -562,7 +562,7 @@ inline void Char::operator >>=(const char b) ...@@ -562,7 +562,7 @@ inline void Char::operator >>=(const char b)
{ rep >>= b; ; } { rep >>= b; ; }
inline char& operator = (char& a, const Char & b) // { dg-warning "" } inline char& operator = (char& a, const Char & b) // { dg-error "" }
{ a = b.Char::val(); return a;} { a = b.Char::val(); return a;}
inline char& operator += (char& a, const Char & b) inline char& operator += (char& a, const Char & b)
{ a += b.Char::val(); return a; } { a += b.Char::val(); return a; }
......
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
// prms-id: 9732 // prms-id: 9732
struct foo {}; struct foo {};
foo& x() { return foo(); } // { dg-warning "" } foo& x() { return foo(); } // { dg-error "invalid init" }
...@@ -5,9 +5,9 @@ class S { ...@@ -5,9 +5,9 @@ class S {
public: public:
void (S::*pmf)(); void (S::*pmf)();
void foo() { void foo() {
pmf(); // { dg-warning "" } pmf(); // { dg-error "pointer-to-member" }
} }
static void foo1(S* sp) { static void foo1(S* sp) {
(sp->pmf)(); // { dg-error "" } (sp->pmf)(); // { dg-error "pointer-to-member" }
} }
}; };
...@@ -9,6 +9,6 @@ int *pp=&i; ...@@ -9,6 +9,6 @@ int *pp=&i;
void foo() { } void foo() { }
int main() int main()
{ {
charptr(*pp)++; // { dg-warning "" } charptr(*pp)++; // { dg-error "lvalue" }
return 0; return 0;
} }
...@@ -12,10 +12,10 @@ struct A { ...@@ -12,10 +12,10 @@ struct A {
typedef void (A::*pmf)(); typedef void (A::*pmf)();
static int mememe = &A::foo - &A::bar; // { dg-warning "" } static int mememe = &A::foo - &A::bar; // { dg-error "invalid operands" }
pmf b = &A::foo-1; // { dg-warning "" } pmf b = &A::foo-1; // { dg-error "invalid operands" }
int main() { int main() {
double y; double y;
y=X(Y-Z); // { dg-warning "" } y=X(Y-Z); // { dg-error "pointer to a function" }
} }
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
// { dg-options "-Wshadow" } // { dg-options "-Wshadow" }
// GROUPS passed niklas scoping ARM // GROUPS passed niklas scoping ARM
class X { X (int); }; class X { X (int); };
void X (int);// { dg-error "" } .*hides constructor.* void X (int);// { dg-warning "hides constructor" }
void f () { X (1); } void f () { X (1); }
...@@ -41,16 +41,16 @@ int main () ...@@ -41,16 +41,16 @@ int main ()
{ {
{ {
foofPtr fp = &foo::b; foofPtr fp = &foo::b;
barfPtr bp = static_cast <barfPtr> (fp); // { dg-error "" } invalid static_cast barfPtr bp = static_cast <barfPtr> (fp); // { dg-error "via virtual base" } invalid static_cast
foofPtr fp2 = static_cast <foofPtr> (bp); // { dg-error "" } invalid static_cast foofPtr fp2 = static_cast <foofPtr> (bp); // { dg-error "via virtual base" } invalid static_cast
foofPtr fp3 = bp; // { dg-error "" } cannot convert foofPtr fp3 = bp; // { dg-error "via virtual base" } cannot convert
fp3 = (foofPtr)bp; // { dg-warning "" } via virtual base fp3 = (foofPtr)bp; // { dg-error "via virtual base" } via virtual base
foomPtr fmp = &foo::m; foomPtr fmp = &foo::m;
barmPtr bmp = static_cast <barmPtr> (fmp); // { dg-error "" } invalid static_cast barmPtr bmp = static_cast <barmPtr> (fmp); // { dg-error "via virtual base" } invalid static_cast
foomPtr fmp2 = static_cast <foomPtr> (bmp); // { dg-error "" } invalid static_cast foomPtr fmp2 = static_cast <foomPtr> (bmp); // { dg-error "via virtual base" } invalid static_cast
foomPtr fmp3 = bmp; // { dg-error "" } cannot convert foomPtr fmp3 = bmp; // { dg-error "via virtual base" } cannot convert
fmp3 = (foomPtr)bmp; // { dg-warning "" } via virtual base fmp3 = (foomPtr)bmp; // { dg-error "via virtual base" } via virtual base
} }
return 0; return 0;
......
...@@ -22,9 +22,9 @@ void fn(int i) ...@@ -22,9 +22,9 @@ void fn(int i)
double d; double d;
int j; int j;
j = (i ? e1 : e2); // { dg-warning "" } mismatch j = (i ? e1 : e2); // { dg-warning "mismatch" }
d = (i ? e1 : 1.0); // { dg-warning "" } mismatch d = (i ? e1 : 1.0); // { dg-warning "non-enumeral" }
d = (i ? 1.0 : e2); // { dg-warning "" } mismatch d = (i ? 1.0 : e2); // { dg-warning "non-enumeral" }
E1 e = (i ? e1 : e1); // ok E1 e = (i ? e1 : e1); // ok
j = (i ? 1 : e2); // ok j = (i ? 1 : e2); // ok
j = (i ? e1 : 1); // ok j = (i ? e1 : 1); // ok
...@@ -35,11 +35,11 @@ void fn(int i) ...@@ -35,11 +35,11 @@ void fn(int i)
(i ? throw X() : throw X()); // ok, void (i ? throw X() : throw X()); // ok, void
(i ? i : j) = 1; // ok, int & (i ? i : j) = 1; // ok, int &
(i ? throw X() : j) = 1; // { dg-error "" } non lvalue (i ? throw X() : j) = 1; // { dg-error "lvalue" }
(i ? j : throw X()) = 1; // { dg-error "" } non lvalue (i ? j : throw X()) = 1; // { dg-error "lvalue" }
(i ? throw X() : throw X()) = 1; // { dg-error "" } invalid use of void (i ? throw X() : throw X()) = 1; // { dg-error "lvalue" }
(i ? (void)1 : i++); // { dg-warning "" } not a throw (i ? (void)1 : i++); // { dg-error "throw-expression" }
(i ? i++ : (void)1); // { dg-warning "" } not a throw (i ? i++ : (void)1); // { dg-error "throw-expression" }
} }
...@@ -27,5 +27,5 @@ void foo::a() ...@@ -27,5 +27,5 @@ void foo::a()
{ {
typedef void(foo::*t)(); typedef void(foo::*t)();
t c = & foo::b; t c = & foo::b;
d = (T) c; // { dg-warning "" } pointer to member cast d = (T) c; // { dg-error "pointer to member" }
} }
...@@ -8,40 +8,41 @@ ...@@ -8,40 +8,41 @@
struct A { struct A {
int A::fn(); // { dg-warning "" } extra qualification int A::fn(); // { dg-error "extra qualification" }
int A::m; // { dg-warning "" } extra qualification int A::m; // { dg-error "extra qualification" }
struct e; struct e;
struct A::e {int i;}; // { dg-warning "" } extra qualification struct A::e {int i;}; // { dg-error "extra qualification" "qual" }
struct A::expand { // { dg-warning "" } extra qualification // { dg-error "anonymous struct" "anon" { target *-*-* } 14 }
struct A::expand { // { dg-error "qualified name" }
int m; int m;
}; };
struct Z; struct Z;
expand me; // { dg-error "error: 'expand' does not name a type" } expand me; // { dg-error "'expand' does not name a type" }
void foo(struct A::e); void foo(struct A::e);
void foo(struct A::z); // { dg-warning "" } extra qualification void foo(struct A::z); // { dg-error "does not name a type" }
}; };
struct Q; struct Q;
struct B { struct B {
struct A::fink { // { dg-error "" } no such member struct A::fink { // { dg-error "does not name a class before" }
int m; int m;
}; };
struct A::Z { // { dg-error "" } A::Z not a member of B struct A::Z { // { dg-error "does not enclose" } A::Z not a member of B
int m; int m;
}; };
int m; int m;
int n; int n;
struct ::Q { // { dg-error "" } ::Q not a member of B struct ::Q { // { dg-error "global qual" } ::Q not a member of B
int m; int m;
}; };
int A::fn() { // { dg-error "" } A::fn not a member of B int A::fn() { // { dg-error "cannot define member" } A::fn not a member of B
return 0; return 0;
} }
void fn(struct ::Q &); void fn(struct ::Q &);
void foo(struct A::y); // { dg-error "" } no such member void foo(struct A::y); // { dg-error "does not name a type" } no such member
}; };
struct ::C { // { dg-warning "" } extra qualification struct ::C { // { dg-error "invalid before" } extra qualification
int i; int i;
}; };
...@@ -52,26 +53,26 @@ namespace N { ...@@ -52,26 +53,26 @@ namespace N {
namespace NMS namespace NMS
{ {
void NMS::fn(); // { dg-warning "" "" } extra qualification void NMS::fn(); // { dg-error "explicit qual" }
int NMS::i; // { dg-warning "" "" } extra qualification int NMS::i; // { dg-error "explicit qual" }
struct NMS::D { // { dg-warning "" } extra qualification struct NMS::D { // { dg-error "does not name a class" }
int i; int i;
}; };
struct N::E { // { dg-error "" } no such type struct N::E { // { dg-error "does not name a class" } no such type
int i; int i;
}; };
struct ::F { // { dg-error "" } no such type struct ::F { // { dg-error "global qual" } no such type
int i; int i;
}; };
int N::fn() { // { dg-error "" } N::fn not a member of NMS int N::fn() { // { dg-error "namespace" } N::fn not a member of NMS
return 0; return 0;
} }
struct N::F { // { dg-error "" } N::F not a member of NMS struct N::F { // { dg-error "namespace" } N::F not a member of NMS
int i; int i;
}; };
} }
NMS::D thing; // { dg-error "error: 'D' in namespace 'NMS' does not name a type" } NMS::D thing; // { dg-error "'D' in namespace 'NMS' does not name a type" }
void NMS::fn() void NMS::fn()
{ {
i = 3; i = 3;
......
...@@ -8,6 +8,6 @@ void bar(foo a) { ...@@ -8,6 +8,6 @@ void bar(foo a) {
delete a; // should be accepted delete a; // should be accepted
delete[] a; // should be accepted delete[] a; // should be accepted
char b[1]; char b[1];
delete b; // { dg-error "" } expecting pointer type delete b; // { dg-warning "deleting array" } expecting pointer type
delete[] b; // { dg-error "" } expecting pointer type delete[] b; // { dg-warning "deleting array" } expecting pointer type
} }
...@@ -13,22 +13,22 @@ typedef __SIZE_TYPE__ size_t; ...@@ -13,22 +13,22 @@ typedef __SIZE_TYPE__ size_t;
void *operator new(size_t) void *operator new(size_t)
{ {
return 0; // { dg-error "" } cannot return NULL return 0; // { dg-warning "NULL" } cannot return NULL
} }
void *operator new[](size_t) void *operator new[](size_t)
{ {
return 0; // { dg-error "" } cannot return NULL return 0; // { dg-warning "NULL" } cannot return NULL
} }
struct X struct X
{ {
void *operator new(size_t) void *operator new(size_t)
{ {
return 0; // { dg-error "" } cannot return NULL return 0; // { dg-warning "NULL" } cannot return NULL
} }
void *operator new[](size_t) void *operator new[](size_t)
{ {
return 0; // { dg-error "" } cannot return NULL return 0; // { dg-warning "NULL" } cannot return NULL
} }
}; };
......
...@@ -4,12 +4,12 @@ typedef struct { ...@@ -4,12 +4,12 @@ typedef struct {
} *p; } *p;
void f (p) { } // { dg-error "uses anonymous type" } void f (p) { } // { dg-error "uses anonymous type" }
p q; // { dg-error "uses anonymous type" } p q; // { dg-warning "uses anonymous type" }
int main() int main()
{ {
extern p j; // { dg-error "uses anonymous type" } extern p j; // { dg-warning "uses anonymous type" }
struct A { int j; }; struct A { int j; };
extern A a; // { dg-error "uses local type" } extern A a; // { dg-warning "uses local type" }
extern void f (A); // { dg-error "uses local type" } extern void f (A); // { dg-error "uses local type" }
} }
...@@ -35,8 +35,8 @@ typedef int foo::*foomPtr; ...@@ -35,8 +35,8 @@ typedef int foo::*foomPtr;
int main () int main ()
{ {
foofPtr fp = &foo::b; foofPtr fp = &foo::b;
barfPtr bp = (barfPtr)fp; // { dg-warning "" } pointer to member barfPtr bp = (barfPtr)fp; // { dg-error "pointer to member" }
foofPtr fp2 = (foofPtr)bp; // { dg-warning "" } pointer to member foofPtr fp2 = (foofPtr)bp; // { dg-error "pointer to member" }
if (fp2 != fp) if (fp2 != fp)
return 1; return 1;
...@@ -51,8 +51,8 @@ int main () ...@@ -51,8 +51,8 @@ int main ()
fobj.m = 78; fobj.m = 78;
foomPtr fmp = &foo::m; foomPtr fmp = &foo::m;
barmPtr bmp = (barmPtr)fmp; // { dg-warning "" } pointer to member barmPtr bmp = (barmPtr)fmp; // { dg-error "pointer to member" }
foomPtr fmp2 = (foomPtr)bmp; // { dg-warning "" } pointer to member foomPtr fmp2 = (foomPtr)bmp; // { dg-error "pointer to member" }
bar *bptr = &fobj; bar *bptr = &fobj;
if (fmp != fmp2) if (fmp != fmp2)
......
...@@ -13,5 +13,5 @@ public: ...@@ -13,5 +13,5 @@ public:
template<class T> template<class T>
void f() void f()
{ {
Vector<T>::iterator i = 0; // { dg-warning "" } missing typename Vector<T>::iterator i = 0; // { dg-error "expected" } missing typename
} }
...@@ -10,6 +10,6 @@ template <class T> ...@@ -10,6 +10,6 @@ template <class T>
struct S : public B<T> struct S : public B<T>
{ {
struct I { struct I {
void f(X x); // { dg-warning "" } implicit typename void f(X x); // { dg-error "'X' has not been declared" } implicit typename
}; };
}; };
...@@ -17,10 +17,10 @@ struct B : public A<U> ...@@ -17,10 +17,10 @@ struct B : public A<U>
template <class U> template <class U>
struct C : public B<U> struct C : public B<U>
{ {
A_Type Func(); // { dg-warning "" } implicit typename A_Type Func(); // { dg-error "does not name a type" } implicit typename
}; };
template <class U> template <class U>
C<U>::A_Type C<U>::Func() { // { dg-warning "" } implicit typename C<U>::A_Type C<U>::Func() { // { dg-error "expected" } implicit typename
} }
...@@ -17,10 +17,11 @@ struct B : public A<U> ...@@ -17,10 +17,11 @@ struct B : public A<U>
template <class U> template <class U>
struct C : public B<U> struct C : public B<U>
{ {
void Func(A_Type); // { dg-warning "" } implicit typename void Func(A_Type); // { dg-error "has not been declared" } implicit typename
}; };
template <class U> template <class U>
void C<U>::Func(A_Type) { // { dg-warning "" } implicit typename void C<U>::Func(A_Type) { // { dg-error "declared void" "void" } implicit typename
// { dg-error "not declared" "decl" { target *-*-* } 25 }
} }
...@@ -15,6 +15,8 @@ template <class T> ...@@ -15,6 +15,8 @@ template <class T>
struct D : public A <C <T> > { struct D : public A <C <T> > {
void f () void f ()
{ {
B* new_entries = (B *) 0; // { dg-warning "" } implicit typename B* new_entries = (B *) 0; // { dg-error "'B' was not declared in this scope" "B" }
// { dg-error "'new_entries' was not declared in this scope" "new_entries" { target *-*-* } 18 }
// { dg-error "expected" "exp" { target *-*-* } 18 }
} }
}; };
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