+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>
Adam Nemet <anemet@caviumnetworks.com>
/* { dg-do compile }
{ dg-require-iconv "IBM1047" }
*/
-int foo __attribute__ ((walrus)); /* { dg-error "walrus" "ignored" } */
+int foo __attribute__ ((walrus)); /* { dg-warning "walrus" "ignored" } */
char x[] = "foobar";
pv = reinterpret_cast <PV>(pf); // { dg-warning "casting between" "" }
/* the following two might or might not be ok with 195. */
- pf = reinterpret_cast <PF>(po); // { dg-error "casting between" "" }
- po = reinterpret_cast <PO>(pf); // { dg-error "casting between" "" }
+ pf = reinterpret_cast <PF>(po); // { dg-warning "casting between" "" }
+ po = reinterpret_cast <PO>(pf); // { dg-warning "casting between" "" }
/* These will never be ok, as they are implicit. */
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 f() {
- (void *)p; // { dg-error "" }
+ (void *)p; // { dg-warning "forbids cast" }
}
// 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 }
class T {
public:
- __attribute__ ((garbage1)) void member1(int) {} /* { dg-error "'garbage1' attribute directive ignored" "" } */
- void __attribute__ ((garbage2)) member2(int) {} /* { dg-error "'garbage2' attribute directive ignored" "" } */
+ __attribute__ ((garbage1)) void member1(int) {} /* { dg-warning "'garbage1' attribute directive ignored" "" } */
+ void __attribute__ ((garbage2)) member2(int) {} /* { dg-warning "'garbage2' attribute directive ignored" "" } */
};
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_4[0] = u"ab"; /* { dg-warning "chars is too long" } */
-const char16_t s16_5[1] = u"ab"; /* { dg-warning "chars is too long" } */
-const char16_t s16_6[2] = 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-error "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_8[4] = u"ab";
const char32_t s32_2[] = U"ab";
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_5[1] = U"ab"; /* { dg-warning "chars is too long" } */
-const char32_t s32_6[2] = 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-error "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_8[4] = U"ab";
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_4[0] = u"ab"; /* { dg-warning "chars is too long" } */
-const char16_t s16_5[1] = u"ab"; /* { dg-warning "chars is too long" } */
-const char16_t s16_6[2] = 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-error "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_8[4] = u"ab";
const char32_t s32_2[] = U"ab";
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_5[1] = U"ab"; /* { dg-warning "chars is too long" } */
-const char32_t s32_6[2] = 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-error "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_8[4] = U"ab";
/* 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-options "-std=c++0x" } */
-typedef short unsigned int char16_t; /* { dg-warning "redeclaration" } */
-typedef unsigned int char32_t; /* { dg-warning "redeclaration" } */
+typedef short unsigned int char16_t; /* { dg-error "redeclaration" } */
+typedef unsigned int char32_t; /* { dg-error "redeclaration" } */
// Test that we complain about redeclaration with different visibility
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 ("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.
// { dg-require-visibility "" }
template <class T> void A<T>::f (T) { }
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" }
class foo {
public:
void operator& (int = 1); // { dg-error "default argument" }
- void operator++ (int = 2); // { dg-error "default argument" }
- void operator-- (int = 3); // { dg-error "default argument" }
+ void operator++ (int = 2); // { dg-warning "default argument" }
+ void operator-- (int = 3); // { dg-warning "default argument" }
};
void
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 }
}
foo() {};
void bar() {};
- foo(int) {};; // { dg-error "extra" }
- void bar(int) {};; // { dg-error "extra" }
+ foo(int) {};; // { dg-warning "extra" }
+ void bar(int) {};; // { dg-warning "extra" }
};
struct B { virtual void foo () = 0; };
struct D1 : 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" }
int &f()
{
- A a; // { dg-error "local" }
+ A a; // { dg-warning "local" }
return a.second;
}
int &g()
{
- int ar[42]; // { dg-error "local" }
+ int ar[42]; // { dg-warning "local" }
return ar[20];
}
class B : public A {
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 () {
{
gen_op U1;
U1 = Fe();
-} // { dg-error "" } reaches end of non-void function
+} // { dg-warning "no return" } reaches end of non-void function
int
main () {}
virtual ~GnWidget();
};
-class GnOptionGroup : public GnObject, public GnWidget {// { dg-error "" } warning
+class GnOptionGroup : public GnObject, public GnWidget {// { dg-warning "inaccessible" }
};
class A {
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";
-} // { dg-error "no return statement" }
+} // { dg-warning "no return statement" }
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;
enum color { red, green, blue, orange, brown };
struct s {
- enum color field:2; // { dg-error "" } too small
+ enum color field:2; // { dg-warning "too small" }
};
if (test3 (vp))
return fail ();
ptr_to_method_of_char p2 = &base::method;
- vp = (void*) p2; // { dg-error "" }
+ vp = (void*) p2; // { dg-warning "converting" }
if (test4 (vp))
return fail ();
ptr_to_method_of_float p3 = &base::method;
- vp = (void*) p3; // { dg-error "" }
+ vp = (void*) p3; // { dg-warning "converting" }
if (test5 (vp))
return fail ();
int test4 (void* vp)
{
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);
}
int test5 (void* vp)
{
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) {
return 1;
static unsigned sequence_number;
};
-const Regex NDAMName<'L'>::pattern("^[Ll](.*)$", 1);// { dg-error "" } type/value.*
-unsigned NDAMName<'L'>::sequence_number = 0;// { dg-error "" } type/value
+const Regex NDAMName<'L'>::pattern("^[Ll](.*)$", 1);// { dg-error "type/value mismatch" "mismatch" }
+// { 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 }
// { dg-options "-Wctor-dtor-privacy" }
// GROUPS passed warnings
// there should be a warning about foo only defining private methods
-class foo { // { dg-error "" } .*
+class foo { // { dg-warning "private" }
int bar();
};
struct struct00 { };
int global_function_0 () {
-} // { dg-error "" }
+} // { dg-warning "no return" }
struct00 global_function_1 () {
-} // { dg-error "" }
+} // { dg-warning "no return" }
struct struct0 {
int struct0_member_function_0 () {
- } // { dg-error "" }
+ } // { dg-warning "no return" }
struct0 struct0_member_function_1 () {
- } // { dg-error "" }
+ } // { dg-warning "no return" }
};
struct struct1 {
};
int struct1_member_function_0 () {
-} // { dg-error "" }
+} // { dg-warning "no return" }
struct1 struct1::struct1_member_function_1 () {
-} // { dg-error "" }
+} // { dg-warning "no return" }
int main () { return 0; }
int main ();
-short s = (short) &main; // { dg-warning "" "" { xfail h8*-*-* xstormy16-*-* } } small integer
-char c = (char) &main; // { dg-warning "" } small integer
+short s = (short) &main; // { dg-error "taking address" "addr" { xfail h8*-*-* xstormy16-*-* } }
+// { 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; }
// PRMS Id: 4992
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 }
}
#define PF __attribute__ ((format (printf, 1, 2)))
struct A {
- static PF void f (char *, ...);
- friend PF void g (char *, ...);
+ static PF void f (const char *, ...);
+ static PF void g (const char *, ...) { }
static void test ();
};
-void PF h (char *, ...);
-void PF k (char *, ...) { }
+void PF h (const char *, ...);
+void PF k (const char *, ...) { }
void A::test ()
{
- f ("%f", 42); // { dg-warning "" }
- g ("%f", 42); // { dg-warning "" }
- h ("%f", 42); // { dg-warning "" }
- k ("%f", 42); // { dg-warning "" }
+ f ("%f", 42); // { dg-warning "argument 2" }
+ g ("%f", 42); // { dg-warning "argument 2" }
+ h ("%f", 42); // { dg-warning "argument 2" }
+ k ("%f", 42); // { dg-warning "argument 2" }
}
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 *-*-* } }
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; } };
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" }
;
}
typedef __SIZE_TYPE__ size_t;
struct A {
- int operator?:(int a, int b); // { dg-warning "" }
- static int operator()(int a); // { dg-error "" } must be nonstatic
- static int operator+(A,A); // { dg-error "" } must be nonstatic
- int operator+(int a, int b = 1); // { dg-error "" } two errors on this line
- int operator++(char); // { dg-error "" } must take 'int'
+ int operator?:(int a, int b); // { dg-error "expected type-specifier" }
+ static int operator()(int a); // { dg-error "must be a nonstatic member" }
+ static int operator+(A,A); // { dg-error "either a non-static member" }
+ int operator+(int a, int b = 1); // { dg-error "either zero or one" }
+ int operator++(char); // { dg-error "must take 'int'" }
void operator delete (void *);
void operator delete (void *, unsigned long);
};
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 delete (A a); // { dg-error "" } ditto
+void * operator new (A a); // { dg-error "first parameter" }
+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 }
bar2 wa [5];
wa[0] = baz(f);
undef2 (1); // { dg-error "" } implicit declaration
-} // { dg-error "no return statement" }
+} // { dg-warning "no return statement" }
int ninny ()
{
int darg (char X::*p)
{
undef3 (1); // { dg-error "" } implicit declaration
-} // { dg-error "no return statement" }
+} // { dg-warning "no return statement" }
int good_friend(int)
{
obj.parts = 0;
- } // { dg-error "" } non-void
+ } // { dg-warning "non-void" }
int bad_friend()
{
obj.parts = 0;
- } // { dg-error "" } non-void
+ } // { dg-warning "non-void" }
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 }
struct SS {
int ss;
};
-};// { dg-error "" } .*
+};// { dg-warning "no members" }
{
public:
virtual void f(void) = 0; // pure virtual function.
- A() {f();} // { dg-error "" } called in a constructor
- ~A() {f();} // { dg-error "" } called in a destructor
+ A() {f();} // { dg-warning "const" } called in a constructor
+ ~A() {f();} // { dg-warning "destr" } called in a destructor
};
#define NOPE
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)
void foo() {
for (class C {};;)
;
- C c; // { dg-error "" }
+ C c; // { dg-error "declared" "decl" }
+ // { dg-error "expected" "exp" { target *-*-* } 6 }
}
void bar() {
for (enum E {num};;)
;
- E e; // { dg-error "" }
+ E e; // { dg-error "declared" "decl" }
+ // { dg-error "expected" "exp" { target *-*-* } 13 }
}
void bee () {
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 }
}
}
// GROUPS passed qualifiers
class bee {
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 {
public:
- int bee::bar; // { dg-error "" } you cannot do this
+ int bee::bar; // { dg-error "not derived" } you cannot do this
int me();
};
void A::main() {
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() {
void (A::*mPtr)() = &A::f1a;
- (*(void (*)(A*))PMF2PF(mPtr))(&a); // { dg-error "" }
+ (*(void (*)(A*))PMF2PF(mPtr))(&a); // { dg-warning "convert" }
}
int main()
{
Ctest obj;
- char* temp = (char *)obj; // { dg-warning "" }
+ char* temp = (char *)obj; // { dg-error "invalid cast" }
temp[0] = '\0';
}
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);
{ 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;}
inline int& operator += (int& a, const Int & b)
{ a += b.Int::val(); return a; }
{ 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;}
inline char& operator += (char& a, const Char & b)
{ a += b.Char::val(); return a; }
// prms-id: 9732
struct foo {};
-foo& x() { return foo(); } // { dg-warning "" }
+foo& x() { return foo(); } // { dg-error "invalid init" }
public:
void (S::*pmf)();
void foo() {
- pmf(); // { dg-warning "" }
+ pmf(); // { dg-error "pointer-to-member" }
}
static void foo1(S* sp) {
- (sp->pmf)(); // { dg-error "" }
+ (sp->pmf)(); // { dg-error "pointer-to-member" }
}
};
void foo() { }
int main()
{
- charptr(*pp)++; // { dg-warning "" }
+ charptr(*pp)++; // { dg-error "lvalue" }
return 0;
}
typedef void (A::*pmf)();
-static int mememe = &A::foo - &A::bar; // { dg-warning "" }
-pmf b = &A::foo-1; // { dg-warning "" }
+static int mememe = &A::foo - &A::bar; // { dg-error "invalid operands" }
+pmf b = &A::foo-1; // { dg-error "invalid operands" }
int main() {
double y;
- y=X(Y-Z); // { dg-warning "" }
+ y=X(Y-Z); // { dg-error "pointer to a function" }
}
// { dg-options "-Wshadow" }
// GROUPS passed niklas scoping ARM
class X { X (int); };
-void X (int);// { dg-error "" } .*hides constructor.*
+void X (int);// { dg-warning "hides constructor" }
void f () { X (1); }
{
{
foofPtr fp = &foo::b;
- barfPtr bp = static_cast <barfPtr> (fp); // { dg-error "" } invalid static_cast
- foofPtr fp2 = static_cast <foofPtr> (bp); // { dg-error "" } invalid static_cast
- foofPtr fp3 = bp; // { dg-error "" } cannot convert
- fp3 = (foofPtr)bp; // { dg-warning "" } via virtual base
+ barfPtr bp = static_cast <barfPtr> (fp); // { dg-error "via virtual base" } invalid static_cast
+ foofPtr fp2 = static_cast <foofPtr> (bp); // { dg-error "via virtual base" } invalid static_cast
+ foofPtr fp3 = bp; // { dg-error "via virtual base" } cannot convert
+ fp3 = (foofPtr)bp; // { dg-error "via virtual base" } via virtual base
foomPtr fmp = &foo::m;
- barmPtr bmp = static_cast <barmPtr> (fmp); // { dg-error "" } invalid static_cast
- foomPtr fmp2 = static_cast <foomPtr> (bmp); // { dg-error "" } invalid static_cast
- foomPtr fmp3 = bmp; // { dg-error "" } cannot convert
- fmp3 = (foomPtr)bmp; // { dg-warning "" } via virtual base
+ barmPtr bmp = static_cast <barmPtr> (fmp); // { dg-error "via virtual base" } invalid static_cast
+ foomPtr fmp2 = static_cast <foomPtr> (bmp); // { dg-error "via virtual base" } invalid static_cast
+ foomPtr fmp3 = bmp; // { dg-error "via virtual base" } cannot convert
+ fmp3 = (foomPtr)bmp; // { dg-error "via virtual base" } via virtual base
}
return 0;
double d;
int j;
- j = (i ? e1 : e2); // { dg-warning "" } mismatch
- d = (i ? e1 : 1.0); // { dg-warning "" } mismatch
- d = (i ? 1.0 : e2); // { dg-warning "" } mismatch
+ j = (i ? e1 : e2); // { dg-warning "mismatch" }
+ d = (i ? e1 : 1.0); // { dg-warning "non-enumeral" }
+ d = (i ? 1.0 : e2); // { dg-warning "non-enumeral" }
E1 e = (i ? e1 : e1); // ok
j = (i ? 1 : e2); // ok
j = (i ? e1 : 1); // ok
(i ? throw X() : throw X()); // ok, void
(i ? i : j) = 1; // ok, int &
- (i ? throw X() : j) = 1; // { dg-error "" } non lvalue
- (i ? j : throw X()) = 1; // { dg-error "" } non lvalue
- (i ? throw X() : throw X()) = 1; // { dg-error "" } invalid use of void
+ (i ? throw X() : j) = 1; // { dg-error "lvalue" }
+ (i ? j : throw X()) = 1; // { dg-error "lvalue" }
+ (i ? throw X() : throw X()) = 1; // { dg-error "lvalue" }
- (i ? (void)1 : i++); // { dg-warning "" } not a throw
- (i ? i++ : (void)1); // { dg-warning "" } not a throw
+ (i ? (void)1 : i++); // { dg-error "throw-expression" }
+ (i ? i++ : (void)1); // { dg-error "throw-expression" }
}
{
typedef void(foo::*t)();
t c = & foo::b;
- d = (T) c; // { dg-warning "" } pointer to member cast
+ d = (T) c; // { dg-error "pointer to member" }
}
struct A {
- int A::fn(); // { dg-warning "" } extra qualification
- int A::m; // { dg-warning "" } extra qualification
+ int A::fn(); // { dg-error "extra qualification" }
+ int A::m; // { dg-error "extra qualification" }
struct e;
- struct A::e {int i;}; // { dg-warning "" } extra qualification
- struct A::expand { // { dg-warning "" } extra qualification
+ struct A::e {int i;}; // { dg-error "extra qualification" "qual" }
+ // { dg-error "anonymous struct" "anon" { target *-*-* } 14 }
+ struct A::expand { // { dg-error "qualified name" }
int m;
};
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::z); // { dg-warning "" } extra qualification
+ void foo(struct A::z); // { dg-error "does not name a type" }
};
struct Q;
struct B {
- struct A::fink { // { dg-error "" } no such member
+ struct A::fink { // { dg-error "does not name a class before" }
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 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 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;
}
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;
};
namespace NMS
{
- void NMS::fn(); // { dg-warning "" "" } extra qualification
- int NMS::i; // { dg-warning "" "" } extra qualification
- struct NMS::D { // { dg-warning "" } extra qualification
+ void NMS::fn(); // { dg-error "explicit qual" }
+ int NMS::i; // { dg-error "explicit qual" }
+ struct NMS::D { // { dg-error "does not name a class" }
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;
};
- struct ::F { // { dg-error "" } no such type
+ struct ::F { // { dg-error "global qual" } no such type
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;
}
- 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;
};
}
-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()
{
i = 3;
delete a; // should be accepted
delete[] a; // should be accepted
char b[1];
- delete b; // { dg-error "" } expecting pointer type
- delete[] b; // { dg-error "" } expecting pointer type
+ delete b; // { dg-warning "deleting array" } expecting pointer type
+ delete[] b; // { dg-warning "deleting array" } expecting pointer type
}
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)
{
- return 0; // { dg-error "" } cannot return NULL
+ return 0; // { dg-warning "NULL" } cannot return NULL
}
struct X
{
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)
{
- return 0; // { dg-error "" } cannot return NULL
+ return 0; // { dg-warning "NULL" } cannot return NULL
}
};
} *p;
void f (p) { } // { dg-error "uses anonymous type" }
-p q; // { dg-error "uses anonymous type" }
+p q; // { dg-warning "uses anonymous type" }
int main()
{
- extern p j; // { dg-error "uses anonymous type" }
+ extern p j; // { dg-warning "uses anonymous type" }
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" }
}
int main ()
{
foofPtr fp = &foo::b;
- barfPtr bp = (barfPtr)fp; // { dg-warning "" } pointer to member
- foofPtr fp2 = (foofPtr)bp; // { dg-warning "" } pointer to member
+ barfPtr bp = (barfPtr)fp; // { dg-error "pointer to member" }
+ foofPtr fp2 = (foofPtr)bp; // { dg-error "pointer to member" }
if (fp2 != fp)
return 1;
fobj.m = 78;
foomPtr fmp = &foo::m;
- barmPtr bmp = (barmPtr)fmp; // { dg-warning "" } pointer to member
- foomPtr fmp2 = (foomPtr)bmp; // { dg-warning "" } pointer to member
+ barmPtr bmp = (barmPtr)fmp; // { dg-error "pointer to member" }
+ foomPtr fmp2 = (foomPtr)bmp; // { dg-error "pointer to member" }
bar *bptr = &fobj;
if (fmp != fmp2)
template<class T>
void f()
{
- Vector<T>::iterator i = 0; // { dg-warning "" } missing typename
+ Vector<T>::iterator i = 0; // { dg-error "expected" } missing typename
}
struct S : public B<T>
{
struct I {
- void f(X x); // { dg-warning "" } implicit typename
+ void f(X x); // { dg-error "'X' has not been declared" } implicit typename
};
};
template <class 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>
-C<U>::A_Type C<U>::Func() { // { dg-warning "" } implicit typename
+C<U>::A_Type C<U>::Func() { // { dg-error "expected" } implicit typename
}
template <class 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>
-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 }
}
struct D : public A <C <T> > {
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 }
}
};