+2012-07-25 Jason Merrill <jason@redhat.com>
+
+ * pt.c (print_candidates_1): Use inform instead of error.
+
2012-07-24 Paolo Carlini <paolo.carlini@oracle.com>
* pt.c (convert_template_argument, tsubst): Simplify fourth argument
}
else
{
+ tree cand = OVL_CURRENT (fn);
if (!*str)
{
/* Pick the prefix string. */
if (!more && !OVL_NEXT (fns))
{
- error ("candidate is: %+#D", OVL_CURRENT (fn));
+ inform (DECL_SOURCE_LOCATION (cand),
+ "candidate is: %#D", cand);
continue;
}
*str = _("candidates are:");
spaces = get_spaces (*str);
}
- error ("%s %+#D", *str, OVL_CURRENT (fn));
+ inform (DECL_SOURCE_LOCATION (cand), "%s %#D", *str, cand);
*str = spaces ? spaces : *str;
}
namespace Q {
inline namespace V1 {
- extern int i; // { dg-error "" }
- extern int j; // { dg-error "" }
- void f(); // { dg-error "" }
- void g(); // { dg-error "" }
+ extern int i; // { dg-message "" }
+ extern int j; // { dg-message "" }
+ void f(); // { dg-message "" }
+ void g(); // { dg-message "" }
}
inline namespace V2 {
- extern int j; // { dg-error "" }
- void g(); // { dg-error "" }
+ extern int j; // { dg-message "" }
+ void g(); // { dg-message "" }
}
- extern int i; // { dg-error "" }
- void f(); // { dg-error "" }
+ extern int i; // { dg-message "" }
+ void f(); // { dg-message "" }
void h();
}
namespace R {
struct base_begin
{
- int *begin(); // { dg-error "" }
+ int *begin(); // { dg-message "" }
};
struct base_end
// Bug 16889:Undetected ambiguity.
struct B {
- int f(); // { dg-error "int B::f" "" }
+ int f(); // { dg-message "int B::f" "" }
};
struct B1 : virtual B {};
// Bug 16889:Undetected ambiguity.
struct B {
- int i; // { dg-error "int B::i" "" }
+ int i; // { dg-message "int B::i" "" }
};
struct B1 : virtual B {};
// Follow on from Bug 16889:Undetected ambiguity.
struct B {
- int f(); // { dg-error "int B::f" "" }
+ int f(); // { dg-message "int B::f" "" }
};
struct B1 : virtual B {};
namespace N
{
- int i; // { dg-error "i" }
+ int i; // { dg-message "i" }
}
-int i; // { dg-error "i" }
+int i; // { dg-message "i" }
using namespace N;
namespace N
{
- namespace M {} // { dg-error "M" }
+ namespace M {} // { dg-message "M" }
}
-namespace M {} // { dg-error "M" }
+namespace M {} // { dg-message "M" }
using namespace N;
using namespace M; // { dg-error "namespace-name|ambiguous" }
typedef __SIZE_TYPE__ size_t;
-struct A { void *operator new(size_t s){} }; // { dg-error "operator new" }
-struct B { void *operator new(size_t s){} }; // { dg-error "operator new" }
+struct A { void *operator new(size_t s){} }; // { dg-message "operator new" }
+struct B { void *operator new(size_t s){} }; // { dg-message "operator new" }
struct C : A,B {};
namespace foo {
inline namespace foo_impl {
- class T; // { dg-error "T" "" }
+ class T; // { dg-message "T" "" }
}
}
namespace bar {
inline namespace bar_impl {
- class T; // { dg-error "T" "" }
+ class T; // { dg-message "T" "" }
}
using namespace foo;
}
// { dg-do compile }
namespace M {
- struct S {}; // { dg-error "struct M::S" "candidate 1" }
+ struct S {}; // { dg-message "struct M::S" "candidate 1" }
}
namespace N {
int S;
- struct S {}; // { dg-error "struct N::S" "candidate 2" }
+ struct S {}; // { dg-message "struct N::S" "candidate 2" }
}
using namespace M;
// { dg-do compile }
namespace M {
- struct S {}; // { dg-error "struct M::S" "candidate 2" }
+ struct S {}; // { dg-message "struct M::S" "candidate 2" }
}
int S;
-struct S {}; // { dg-error "candidates are: struct S" "candidate 1" }
+struct S {}; // { dg-message "candidates are: struct S" "candidate 1" }
using namespace M;
namespace N1 {
void f ();
- struct f; // { dg-error "" "candidate" }
+ struct f; // { dg-message "" "candidate" }
}
namespace N2 {
void f (int);
- struct f; // { dg-error "" "candidate" }
+ struct f; // { dg-message "" "candidate" }
}
namespace M {
namespace A
{
- int i; // { dg-error "i" }
+ int i; // { dg-message "i" }
}
using namespace A;
namespace B
{
namespace B2
{
- int i; // { dg-error "i" }
+ int i; // { dg-message "i" }
}
using namespace B2;
}
// PR c++/20293
-namespace hide { // { dg-error "hide" }
+namespace hide { // { dg-message "hide" }
int k;
}
namespace {
int i;
- namespace hide { // { dg-error "hide" }
+ namespace hide { // { dg-message "hide" }
int j;
}
}
// PR c++/48046
-namespace N1 { typedef int T; } // { dg-error "" }
-namespace N2 { typedef float T; } // { dg-error "" }
+namespace N1 { typedef int T; } // { dg-message "" }
+namespace N2 { typedef float T; } // { dg-message "" }
int main()
{
// PR 19030: ICE
// Origin: Volker Reichelt <reichelt@gcc.gnu.org>
-struct A; // { dg-error "A" }
+struct A; // { dg-message "A" }
namespace N
{
- struct A; // { dg-error "A" }
+ struct A; // { dg-message "A" }
}
using namespace N;
-int A::i; // { dg-error "ambiguous|declared here" "" }
-int A::i; // { dg-error "ambiguous|redefinition of" "" }
+int A::i; // { dg-message "ambiguous|declared here" "" }
+int A::i; // { dg-message "ambiguous|redefinition of" "" }
namespace N
{
// PR c++/35112
-namespace X { struct A; } // { dg-error "struct X::A" }
-namespace Y { struct A; } // { dg-error "struct Y::A" }
-namespace Z { struct A; } // { dg-error "struct Z::A" }
-namespace W { struct A; } // { dg-error "struct W::A" }
+namespace X { struct A; } // { dg-message "struct X::A" }
+namespace Y { struct A; } // { dg-message "struct Y::A" }
+namespace Z { struct A; } // { dg-message "struct Z::A" }
+namespace W { struct A; } // { dg-message "struct W::A" }
using namespace X;
using namespace Y;
template <class T>
struct Foo {
int j; // we never see this one.
- int k; // { dg-error "Foo" "" }
+ int k; // { dg-message "Foo" "" }
};
struct Baz
{
int j;
- int k; // { dg-error "candidates" "" }
+ int k; // { dg-message "candidates" "" }
};
// PR c++/42055
-template<typename T> void foo(T, T); // { dg-error "candidates|template" }
+template<typename T> void foo(T, T); // { dg-message "candidates|template" }
-template<typename T> void foo(T, int); // { dg-error "template" }
+template<typename T> void foo(T, int); // { dg-message "template" }
template void foo(int, int); // { dg-error "ambiguous template specialization" }
// PR c++/13950, DR 176
-template <class T> struct Base { }; // { dg-error "" } candidate
+template <class T> struct Base { }; // { dg-message "" } candidate
struct D1: Base<void>
{
// PR c++40342
-template <typename T1, typename T2> int f(T1 *, const T2 *); // { dg-error "" }
-template <typename T1, typename T2> int f(const T1 *, T2 *); // { dg-error "" }
+template <typename T1, typename T2> int f(T1 *, const T2 *); // { dg-message "" }
+template <typename T1, typename T2> int f(const T1 *, T2 *); // { dg-message "" }
int (*p)(const int *, const int *) = f; // { dg-error "ambiguous" }
// keywords: inheritance, ambiguity resolution, members
struct base_0 {
- enum { base_member }; // { dg-error "" } candidate (26, 30)
+ enum { base_member }; // { dg-message "" } candidate (26, 30)
};
struct base_1 {
- int base_member; // { dg-error "" } candidate (26, 34)
+ int base_member; // { dg-message "" } candidate (26, 34)
};
struct base_2 {
- int base_member (); // { dg-error "" } candidate (30, 34)
+ int base_member (); // { dg-message "" } candidate (30, 34)
};
struct derived_0 : public base_0, public base_1 {
void f (char *);
void f (int);
struct A {
- void f (); // { dg-error "" } candidate
- void f (int); // { dg-error "" } candidate
+ void f (); // { dg-message "" } candidate
+ void f (int); // { dg-message "" } candidate
void g () {
void (*p)(char *) = f; // { dg-error "" } no matching function in scope
}
//Based on a report by Bill Currie <bcurrie@tssc.co.nz>
struct foo {
protected:
- int x; // { dg-error "" } candidate
+ int x; // { dg-message "" } candidate
};
struct bar {
public:
- int x(); // { dg-error "" } candidate
+ int x(); // { dg-message "" } candidate
};
struct foobar: public foo, public bar {
void h(double dx);
};
-void Fooey::f(char*) { } // { dg-error "" } candidate
-void Fooey::f(int) { } // { dg-error "" } candidate
-void Fooey::f(float) { } // { dg-error "" } candidate
+void Fooey::f(char*) { } // { dg-message "" } candidate
+void Fooey::f(int) { } // { dg-message "" } candidate
+void Fooey::f(float) { } // { dg-message "" } candidate
void Fooey::h(double zahl) { }
int main() {
// Based on bug report by JDonner <jdonner@schedsys.com>
struct foo {
- static int bar(); // { dg-error "foo::bar" }
- void bar(int); // { dg-error "foo::bar" }
+ static int bar(); // { dg-message "foo::bar" }
+ void bar(int); // { dg-message "foo::bar" }
};
/* gcc emits a hard error without -pedantic, and a warning with
// { dg-do assemble }
struct A {
- int operator ++(); // { dg-error "" } candidates
- void operator ()(); // { dg-error "" } candidates
- void operator delete(void*); // { dg-error "" } candidates
+ int operator ++(); // { dg-message "" } candidates
+ void operator ()(); // { dg-message "" } candidates
+ void operator delete(void*); // { dg-message "" } candidates
};
struct B {
- int operator ++(int); // { dg-error "" } candidates
- void operator ()(); // { dg-error "" } candidates
- void operator delete(void*); // { dg-error "" } candidates
+ int operator ++(int); // { dg-message "" } candidates
+ void operator ()(); // { dg-message "" } candidates
+ void operator delete(void*); // { dg-message "" } candidates
void f();
};
// Submitted by Nathan Sidwell <nathan@acm.org>
// Bug: g++ wasn't listing candidates for a failed conversion.
-void f(int, double); // { dg-error "" } candidate
-void f(double, int); // { dg-error "" } candidate
-void f(int); // { dg-error "" } candidate
+void f(int, double); // { dg-message "" } candidate
+void f(double, int); // { dg-message "" } candidate
+void f(int); // { dg-message "" } candidate
int
main ()
// bug 147. We ICE'd on an unprocessed LOOKUP_EXPR during tsubsting
namespace EManip {
- template <class T> void do_assign(T* d); // { dg-error "" } candidate
+ template <class T> void do_assign(T* d); // { dg-message "" } candidate
}
-template <class T> void do_assign(T* d); // { dg-error "" } candidate
+template <class T> void do_assign(T* d); // { dg-message "" } candidate
template <class T>
struct MatrixC
template <int s>
static void g();
template <int s>
-void f(); // { dg-error "" } candiate
+void f(); // { dg-message "" } candiate
static void f_plus ()
{
// { dg-do assemble }
-template <class T> void foo(); // { dg-error "" } candidate
+template <class T> void foo(); // { dg-message "" } candidate
void (*bar)() = foo<void>;
void (*baz)() = foo; // { dg-error "" } can't deduce T