OSDN Git Service

2009-12-15 Paolo Bonzini <bonzini@gnu.org>
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Dec 2009 00:20:03 +0000 (00:20 +0000)
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Dec 2009 00:20:03 +0000 (00:20 +0000)
    Shujing Zhao  <pearly.zhao@oracle.com>

* intl.c (get_spaces): New.
* intl.h (get_spaces): New.

cp:
2009-12-15  Paolo Bonzini  <bonzini@gnu.org>
    Shujing Zhao  <pearly.zhao@oracle.com>

* Makefile.in (cp/pt.o): Depend on intl.h
* call.c (print_z_candidates): Make loop more compact,
choose head string depending on number of candidates,
extract creation of spaces string to intl.c.
* pt.c (print_overloaded_functions): Replace with...
(print_candidates_1): ... this rewrite.
(print_candidates): Rewrite to call print_candidates_1.
(most_specialized_class): Make loop more compact,
choose head string depending on number of candidates,
and size indents depending on translations.

testsuite:
2009-12-15  Shujing Zhao  <pearly.zhao@oracle.com>

* g++.dg/other/error20.C: Adjust dg-message strings.
* g++.dg/other/error31.C: Likewise.
* g++.dg/rtti/typeid6.C: Likewise.
* g++.dg/ext/ms-1.C: Likewise.
* g++.dg/parse/error19.C: Likewise.
* g++.dg/parse/crash5.C: Likewise.
* g++.dg/cpp0x/explicit4.C: Likewise.
* g++.dg/template/ptrmem4.C: Likewise.
* g++.dg/template/crash37.C: Likewise.
* g++.dg/template/qualttp5.C: Likewise.
* g++.dg/template/local6.C: Likewise.
* g++.dg/template/instantiate5.C: Likewise.
* g++.old-deja/g++.brendan/overload1.C: Likewise.
* g++.old-deja/g++.brendan/cvt3.C: Likewise.
* g++.old-deja/g++.brendan/overload4.C: Likewise.
* g++.old-deja/g++.jason/conversion11.C: Likewise.
* g++.old-deja/g++.jason/scoping10.C: Likewise.
* g++.old-deja/g++.other/expr1.C: Likewise.
* g++.old-deja/g++.other/pmf3.C: Likewise.
* g++.old-deja/g++.other/crash24.C: Likewise.
* g++.old-deja/g++.niklas/t120.C: Likewise.
* g++.old-deja/g++.niklas/t121.C: Likewise.
* g++.old-deja/g++.law/operators9.C: Likewise.
* g++.old-deja/g++.law/arm9.C: Likewise.
* g++.old-deja/g++.law/enum4.C: Likewise.
* g++.old-deja/g++.law/arg11.C: Likewise.
* g++.old-deja/g++.benjamin/15800-1.C: Likewise.
* g++.old-deja/g++.mike/p2431.C: Likewise.
* g++.old-deja/g++.mike/p438.C: Likewise.
* g++.old-deja/g++.mike/p9068.C: Likewise.
* g++.old-deja/g++.mike/p11110.C: Likewise.
* g++.old-deja/g++.bugs/900330_02.C: Likewise.

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

40 files changed:
gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/cp/call.c
gcc/cp/pt.c
gcc/intl.c
gcc/intl.h
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/explicit4.C
gcc/testsuite/g++.dg/ext/ms-1.C
gcc/testsuite/g++.dg/other/error20.C
gcc/testsuite/g++.dg/other/error31.C
gcc/testsuite/g++.dg/parse/crash5.C
gcc/testsuite/g++.dg/parse/error19.C
gcc/testsuite/g++.dg/rtti/typeid6.C
gcc/testsuite/g++.dg/template/crash37.C
gcc/testsuite/g++.dg/template/instantiate5.C
gcc/testsuite/g++.dg/template/local6.C
gcc/testsuite/g++.dg/template/ptrmem4.C
gcc/testsuite/g++.dg/template/qualttp5.C
gcc/testsuite/g++.old-deja/g++.benjamin/15800-1.C
gcc/testsuite/g++.old-deja/g++.brendan/cvt3.C
gcc/testsuite/g++.old-deja/g++.brendan/overload1.C
gcc/testsuite/g++.old-deja/g++.brendan/overload4.C
gcc/testsuite/g++.old-deja/g++.bugs/900330_02.C
gcc/testsuite/g++.old-deja/g++.jason/conversion11.C
gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
gcc/testsuite/g++.old-deja/g++.law/arg11.C
gcc/testsuite/g++.old-deja/g++.law/arm9.C
gcc/testsuite/g++.old-deja/g++.law/enum4.C
gcc/testsuite/g++.old-deja/g++.law/operators9.C
gcc/testsuite/g++.old-deja/g++.mike/p11110.C
gcc/testsuite/g++.old-deja/g++.mike/p2431.C
gcc/testsuite/g++.old-deja/g++.mike/p438.C
gcc/testsuite/g++.old-deja/g++.mike/p9068.C
gcc/testsuite/g++.old-deja/g++.niklas/t120.C
gcc/testsuite/g++.old-deja/g++.niklas/t121.C
gcc/testsuite/g++.old-deja/g++.other/crash24.C
gcc/testsuite/g++.old-deja/g++.other/expr1.C
gcc/testsuite/g++.old-deja/g++.other/pmf3.C

index 94cbf10..292ac69 100644 (file)
@@ -1,3 +1,9 @@
+2009-12-15  Paolo Bonzini  <bonzini@gnu.org>
+           Shujing Zhao  <pearly.zhao@oracle.com>
+
+       * intl.c (get_spaces): New.
+       * intl.h (get_spaces): New.
+
 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR bootstrap/42369
index e51641b..bf6ecd8 100644 (file)
@@ -1,3 +1,17 @@
+2009-12-15  Paolo Bonzini  <bonzini@gnu.org>
+           Shujing Zhao  <pearly.zhao@oracle.com>
+
+       * Makefile.in (cp/pt.o): Depend on intl.h
+       * call.c (print_z_candidates): Make loop more compact,
+       choose head string depending on number of candidates,
+       extract creation of spaces string to intl.c.
+       * pt.c (print_overloaded_functions): Replace with...
+       (print_candidates_1): ... this rewrite.
+       (print_candidates): Rewrite to call print_candidates_1.
+       (most_specialized_class): Make loop more compact,
+       choose head string depending on number of candidates,
+       and size indents depending on translations.
+
 2009-12-11  Jason Merrill  <jason@redhat.com>
 
        PR c++/42219
index 913993a..9b134ed 100644 (file)
@@ -292,7 +292,7 @@ cp/expr.o: cp/expr.c $(CXX_TREE_H) $(TM_H) $(RTL_H) $(FLAGS_H) $(EXPR_H) \
   toplev.h except.h $(TM_P_H)
 cp/pt.o: cp/pt.c $(CXX_TREE_H) $(TM_H) cp/decl.h cp/cp-objcp-common.h \
   toplev.h $(RTL_H) except.h $(TREE_INLINE_H) pointer-set.h gt-cp-pt.h \
-  vecprim.h
+  vecprim.h intl.h
 cp/error.o: cp/error.c $(CXX_TREE_H) $(TM_H) toplev.h $(DIAGNOSTIC_H) \
   $(FLAGS_H) $(REAL_H) $(LANGHOOKS_DEF_H) $(CXX_PRETTY_PRINT_H)
 cp/repo.o: cp/repo.c $(CXX_TREE_H) $(TM_H) toplev.h $(DIAGNOSTIC_H) \
index a6041f5..1f17180 100644 (file)
@@ -2730,6 +2730,7 @@ print_z_candidates (struct z_candidate *candidates)
   const char *str;
   struct z_candidate *cand1;
   struct z_candidate **cand2;
+  char *spaces;
 
   if (!candidates)
     return;
@@ -2770,25 +2771,14 @@ print_z_candidates (struct z_candidate *candidates)
        }
     }
 
-  str = _("candidates are:");
-  print_z_candidate (str, candidates);
-  if (candidates->next)
+  str = candidates->next ? _("candidates are:") :  _("candidate is:");
+  spaces = NULL;
+  for (; candidates; candidates = candidates->next)
     {
-      /* Indent successive candidates by the width of the translation
-        of the above string.  */
-      size_t len = gcc_gettext_width (str) + 1;
-      char *spaces = (char *) alloca (len);
-      memset (spaces, ' ', len-1);
-      spaces[len - 1] = '\0';
-
-      candidates = candidates->next;
-      do
-       {
-         print_z_candidate (spaces, candidates);
-         candidates = candidates->next;
-       }
-      while (candidates);
+      print_z_candidate (spaces ? spaces : str, candidates);
+      spaces = spaces ? spaces : get_spaces (str);
     }
+  free (spaces);
 }
 
 /* USER_SEQ is a user-defined conversion sequence, beginning with a
index 6f76d46..68e277e 100644 (file)
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "obstack.h"
 #include "tree.h"
+#include "intl.h"
 #include "pointer-set.h"
 #include "flags.h"
 #include "c-common.h"
@@ -1646,19 +1647,52 @@ explicit_class_specialization_p (tree type)
   return !uses_template_parms (CLASSTYPE_TI_ARGS (type));
 }
 
-/* Print the list of overloaded FNS in an error message.   */
+/* Print the list of functions at FNS, going through all the overloads
+   for each element of the list.  Alternatively, FNS can not be a
+   TREE_LIST, in which case it will be printed together with all the
+   overloads.
+
+   MORE and *STR should respectively be FALSE and NULL when the function
+   is called from the outside.  They are used internally on recursive
+   calls.  print_candidates manages the two parameters and leaves NULL
+   in *STR when it ends.  */
 
 static void
-print_overloaded_functions (tree fns, const char **str)
+print_candidates_1 (tree fns, bool more, const char **str)
 {
-  tree fn;
+  tree fn, fn2;
+  char *spaces = NULL;
+
   for (fn = fns; fn; fn = OVL_NEXT (fn))
+    if (TREE_CODE (fn) == TREE_LIST)
+      {
+        gcc_assert (!OVL_NEXT (fn) && !is_overloaded_fn (fn));
+        for (fn2 = fn; fn2 != NULL_TREE; fn2 = TREE_CHAIN (fn2))
+          print_candidates_1 (TREE_VALUE (fn2),
+                              TREE_CHAIN (fn2) || more, str);
+      }
+    else
+      {
+        if (!*str)
+          {
+            /* Pick the prefix string.  */
+            if (!more && !OVL_NEXT (fns))
+              {
+                error ("candidate is: %+#D", OVL_CURRENT (fn));
+                continue;
+              }
+
+            *str = _("candidates are:");
+            spaces = get_spaces (*str);
+          }
+        error ("%s %+#D", *str, OVL_CURRENT (fn));
+        *str = spaces ? spaces : *str;
+      }
+
+  if (!more)
     {
-      if (TREE_CODE (fn) == TREE_LIST)
-       print_candidates (fn);
-      else
-       error ("%s %+#D", *str, OVL_CURRENT (fn));
-      *str = "               ";
+      free (spaces);
+      *str = NULL;
     }
 }
 
@@ -1667,16 +1701,9 @@ print_overloaded_functions (tree fns, const char **str)
 void
 print_candidates (tree fns)
 {
-  const char *str = "candidates are:";
-
-  if (is_overloaded_fn (fns))
-    print_overloaded_functions (fns, &str);
-  else
-    {
-      tree fn;
-      for (fn = fns; fn != NULL_TREE; fn = TREE_CHAIN (fn))
-       print_overloaded_functions (TREE_VALUE (fn), &str);
-    }
+  const char *str = NULL;
+  print_candidates_1 (fns, false, &str);
+  gcc_assert (str == NULL);
 }
 
 /* Returns the template (one of the functions given by TEMPLATE_ID)
@@ -15753,13 +15780,16 @@ most_specialized_class (tree type, tree tmpl)
 
   if (ambiguous_p)
     {
-      const char *str = "candidates are:";
+      const char *str;
+      char *spaces = NULL;
       error ("ambiguous class template instantiation for %q#T", type);
+      str = TREE_CHAIN (list) ? _("candidates are:") : _("candidate is:");
       for (t = list; t; t = TREE_CHAIN (t))
-       {
-         error ("%s %+#T", str, TREE_TYPE (t));
-         str = "               ";
-       }
+        {
+          error ("%s %+#T", spaces ? spaces : str, TREE_TYPE (t));
+          spaces = spaces ? spaces : get_spaces (str);
+        }
+      free (spaces);
       return error_mark_node;
     }
 
index 5b48615..63de3ec 100644 (file)
@@ -120,3 +120,20 @@ gcc_gettext_width (const char *msgstr)
 #endif
 
 #endif /* ENABLE_NLS */
+
+/* Return the indent for successive lines, using the width of
+   the STR.  STR must have been translated already.  The string
+   must be freed by the caller.  */
+
+char *
+get_spaces (const char *str)
+{
+   size_t len = gcc_gettext_width (str);
+   char *spaces = XNEWVEC(char, len + 1);
+   memset (spaces, ' ', len);
+   spaces[len] = '\0';
+   return spaces;
+}
+
+
+
index 902e7ae..2df9b17 100644 (file)
@@ -54,6 +54,8 @@ extern size_t gcc_gettext_width (const char *);
 # define G_(gmsgid) gmsgid
 #endif
 
+extern char *get_spaces (const char *);
+
 extern const char *open_quote;
 extern const char *close_quote;
 extern const char *locale_encoding;
index bc25d61..29f02c0 100644 (file)
@@ -1,3 +1,38 @@
+2009-12-15  Shujing Zhao  <pearly.zhao@oracle.com>
+
+       * g++.dg/other/error20.C: Adjust dg-message strings.
+       * g++.dg/other/error31.C: Likewise.
+       * g++.dg/rtti/typeid6.C: Likewise.
+       * g++.dg/ext/ms-1.C: Likewise.
+       * g++.dg/parse/error19.C: Likewise.
+       * g++.dg/parse/crash5.C: Likewise.
+       * g++.dg/cpp0x/explicit4.C: Likewise.
+       * g++.dg/template/ptrmem4.C: Likewise.
+       * g++.dg/template/crash37.C: Likewise.
+       * g++.dg/template/qualttp5.C: Likewise.
+       * g++.dg/template/local6.C: Likewise.
+       * g++.dg/template/instantiate5.C: Likewise.
+       * g++.old-deja/g++.brendan/overload1.C: Likewise.
+       * g++.old-deja/g++.brendan/cvt3.C: Likewise.
+       * g++.old-deja/g++.brendan/overload4.C: Likewise.
+       * g++.old-deja/g++.jason/conversion11.C: Likewise.
+       * g++.old-deja/g++.jason/scoping10.C: Likewise.
+       * g++.old-deja/g++.other/expr1.C: Likewise.
+       * g++.old-deja/g++.other/pmf3.C: Likewise.
+       * g++.old-deja/g++.other/crash24.C: Likewise.
+       * g++.old-deja/g++.niklas/t120.C: Likewise.
+       * g++.old-deja/g++.niklas/t121.C: Likewise.
+       * g++.old-deja/g++.law/operators9.C: Likewise.
+       * g++.old-deja/g++.law/arm9.C: Likewise.
+       * g++.old-deja/g++.law/enum4.C: Likewise.
+       * g++.old-deja/g++.law/arg11.C: Likewise.
+       * g++.old-deja/g++.benjamin/15800-1.C: Likewise.
+       * g++.old-deja/g++.mike/p2431.C: Likewise.
+       * g++.old-deja/g++.mike/p438.C: Likewise.
+       * g++.old-deja/g++.mike/p9068.C: Likewise.
+       * g++.old-deja/g++.mike/p11110.C: Likewise.
+       * g++.old-deja/g++.bugs/900330_02.C: Likewise.
+
 2009-12-14  Uros Bizjak  <ubizjak@gmail.com>
 
        * g++.dg/other/i386-2.C: Add -mpopcnt -mabm -mlwp to dg-options.
index 74726a9..67c60f6 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-options "-std=c++0x" }
 
 struct A {
-  A(const A&, int = 0);                // { dg-message "candidates" }
+  A(const A&, int = 0);                // { dg-message "candidate" }
 };
 struct B
 {
index dcd1d04..3963b75 100644 (file)
@@ -10,7 +10,7 @@ struct X
 
 void Quux (void (X::*) ());
 
-void X::Foo (X *ptr)  // { dg-message "candidates" }
+void X::Foo (X *ptr)  // { dg-message "candidate" }
 {
   Quux (Foo); // { dg-error "no matches" }
   Quux (Bar);
index 50a4495..6033c0e 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do compile }
 
 struct A
-{              // { dg-message "candidates" }
+{              // { dg-message "candidate is" }
   virtual A foo ();
 };
 
index c9e8351..c409550 100644 (file)
@@ -3,7 +3,7 @@
 // { dg-options "" }
 // { dg-bogus "not supported by" "" { target *-*-* } 0 }
 
-struct A {};           // { dg-message "note: candidates are" }
+struct A {};           // { dg-message "note: candidate is" }
 
 void
 foo ()
index acf9e9d..4597d6c 100644 (file)
@@ -1,7 +1,7 @@
 // { dg-options "-w" }
 
 class QString { // { dg-error "previous definition" }
-  QString (const QString & a); // { dg-message "candidates" }
+  QString (const QString & a); // { dg-message "candidate is" }
 };
 
 class QString { }; // { dg-error "redefinition" }
index 5582891..39c2d78 100644 (file)
@@ -2,7 +2,7 @@
 // PR C++/17867
 
 struct A
-{  // { dg-message "1:candidates are:" }
+{  // { dg-message "1:candidate is:" }
   A(int);
 };
 
index 18709b4..adc5bbb 100644 (file)
@@ -7,5 +7,5 @@ namespace std
 
 template<int> void foo()
 {
-  !typeid(void); // { dg-error "!typeid\\(void\\)|candidates" }
+  !typeid(void); // { dg-error "!typeid\\(void\\)|candidate is" }
 }
index 8af5160..aef0df0 100644 (file)
@@ -11,7 +11,7 @@ struct coperator_stack
 struct helper {};
 
 template<class F>
-void bla(F f) // { dg-message "candidates" }
+void bla(F f) // { dg-message "candidate is" }
 {
 }
 
index 70ed2b0..9cdf310 100644 (file)
@@ -13,7 +13,7 @@ int baz() { return A<0>::i; }
 
 struct B
 {
-  static void foo (int);       // { dg-message "candidates" }
+  static void foo (int);       // { dg-message "candidate is" }
 };
 
 template <typename T> struct C
index 7094e74..c691c4c 100644 (file)
@@ -1,5 +1,5 @@
 template <class T> struct PCVector2
-{ // { dg-message "candidates" }
+{ // { dg-message "candidate is" }
     template <class T2> PCVector2(const PCVector2<T> &cv) ;
 
     PCVector2<T> operator- (const PCVector2<T> &ov) const 
index 0ea73a1..b1422c3 100644 (file)
@@ -6,7 +6,7 @@
 // Pointer to member function template argument deduction ICE.
 
 
-template <class CONT> void queryAliases(CONT& fill_me); // { dg-message "candidates" }
+template <class CONT> void queryAliases(CONT& fill_me); // { dg-message "candidate is" }
 
 struct SpyExample
 {
index 7d1062e..fc93f46 100644 (file)
@@ -4,7 +4,7 @@
 
 template <class U> struct A
 {
-       template <class T> class B {}; // { dg-message "candidates" }
+       template <class T> class B {}; // { dg-message "candidate is" }
 };
 
 template <template <class> class TT> void f()
index deedfba..3441ae5 100644 (file)
@@ -5,7 +5,7 @@
 struct panama {
   panama();
   panama(panama &);
-  panama& operator=(panama&); // { dg-message "candidates" }
+  panama& operator=(panama&); // { dg-message "candidate is" }
 };
 
 extern panama dig();
index 638ba9f..e77c437 100644 (file)
@@ -38,7 +38,7 @@ struct bar
 class nnyacc
 {
 public:
-      static void assign(void*& lval, void*& rval); // { dg-message "candidates" }
+      static void assign(void*& lval, void*& rval); // { dg-message "candidate is" }
 };
 
 void
index 92b04c4..328bcdf 100644 (file)
@@ -9,7 +9,7 @@ public:
 class Bar : public Foo
 {
 public:
-      int f (int); // { dg-message "candidates" }
+      int f (int); // { dg-message "candidate is" }
 };
 
 int main ()
index d832a4b..7a1941c 100644 (file)
@@ -5,7 +5,7 @@
   class B
   {
   public:
-       static void WantsNew (NewObject creator); // { dg-message "candidates" }
+       static void WantsNew (NewObject creator); // { dg-message "candidate is" }
   };
   
   class A
index f1da7fb..5038f23 100644 (file)
@@ -19,7 +19,7 @@ struct B {
 };
 
 struct D : public B {
-  int f(struct B);             // { dg-message "candidates" } referred to below
+  int f(struct B);             // { dg-message "candidate is" } referred to below
 };
 
 void h(D* pd)
index 78e46e1..1e64693 100644 (file)
@@ -14,7 +14,7 @@ public:
 
 class Something {
 public:
-  void DoSomething(Ding A);    // { dg-message "candidates" } referred to
+  void DoSomething(Ding A);    // { dg-message "candidate is" } referred to
 };
 
 void DoSomething(Ding A);
index d576374..9e6ae0f 100644 (file)
@@ -3,7 +3,7 @@
 
 void f (char *);
 struct A {
-  void f ();                   // { dg-message "candidates" } referred to 
+  void f ();                   // { dg-message "candidate is" } referred to 
 };
 struct B : public A {
   void g (char *);
index b6a0194..0133153 100644 (file)
@@ -9,7 +9,7 @@ struct String { String(const char*); };
 
 struct Ack { Ack(String); };
 
-struct S { void method(Ack); };        // { dg-message "candidates" } referenced below
+struct S { void method(Ack); };        // { dg-message "candidate is" } referenced below
 
 void function(Ack);
 
index 7c7cfea..b8128c6 100644 (file)
@@ -19,7 +19,7 @@ class B : public A {
 public:
     void set (f2 f);
 };
-void B::set (f2 f) { std::cout << "called B\n";} // { dg-message "candidates" }
+void B::set (f2 f) { std::cout << "called B\n";} // { dg-message "candidate is" }
 
 int main() {
     B b;
index 742f54b..3783659 100644 (file)
@@ -11,7 +11,7 @@ enum Enum {enumerator1, enumerator2};
 struct Struct
 {
   int i;
-      int getI(Enum) {return i;} // { dg-message "candidates" }
+      int getI(Enum) {return i;} // { dg-message "candidate is" }
 };
 
 int funct (Enum)
index 8ec6825..d00c707 100644 (file)
@@ -10,7 +10,7 @@ class B
 {
 public:
       operator=(B &); // { dg-error "no type" }
-      // { dg-message "candidates" "note" { target *-*-* } 12 }
+      // { dg-message "candidate is" "note" { target *-*-* } 12 }
 };
 
 void
index 746a57c..e234d57 100644 (file)
@@ -6,7 +6,7 @@ class data;
 class conatiner {
 public:
   virtual void* first    ();
-  virtual data* contents (void* i);     // { dg-message "candidates" }
+  virtual data* contents (void* i);     // { dg-message "candidate is" }
 };
 
 class user {
index 1d5b397..0bb2648 100644 (file)
@@ -3,7 +3,7 @@
 class A
 {
        public:
-      A(A &); // { dg-message "candidates" }
+      A(A &); // { dg-message "candidate is" }
 };
 
 class B
index a08a404..16dc628 100644 (file)
@@ -12,7 +12,7 @@ class C
 class D
 {
    public:
-   void a(C& b); // { dg-message "candidates" }
+   void a(C& b); // { dg-message "candidate is" }
 };
 
 void C::test() const
index aff4a6a..ff5454b 100644 (file)
@@ -2,7 +2,7 @@
 // prms-id: 9068
 
 struct ostream {
-  void operator<< (int);       // { dg-message "candidates" } fn ref in err msg
+  void operator<< (int);       // { dg-message "candidate is" } fn ref in err msg
 };
 
 class C {
index 17eaf07..bef0665 100644 (file)
@@ -3,4 +3,4 @@
 typedef void (*T) (...);
 void f ();
 struct S { void g (T); void h() { g(f); } };// { dg-error "match" "match" } 
-// { dg-message "candidates" "note" { target *-*-* } 5 }
+// { dg-message "candidate is" "note" { target *-*-* } 5 }
index cf33739..4510a28 100644 (file)
@@ -3,4 +3,4 @@
 void f ();
 void g1 (void (*) (...)); void h1 () { g1 (f); }// { dg-error "invalid conversion" }
 struct S { void g2 (void (*) (...)); void h2 () { g2 (f); } };// { dg-error "match" "match" } 
-// { dg-message "candidates" "note" { target *-*-* } 5 }
+// { dg-message "candidate is" "note" { target *-*-* } 5 }
index 9d6af1d..a49ce56 100644 (file)
@@ -7,7 +7,7 @@ class foo {
    friend class __iterator;
    typedef __iterator const_iterator;
    virtual ~foo() { }
-   __iterator begin();                         // { dg-message "candidates" } 
+   __iterator begin();                         // { dg-message "candidate is" } 
 };
 static void iteratorTest(const foo &x)
 {
index 1f1f60d..485594d 100644 (file)
@@ -3,7 +3,7 @@
 // Simplified from bug report by Trevor Taylor <ttaylor@powerup.com.au>
 
 struct T {
-  int operator()(int) { } // { dg-message "candidates" }
+  int operator()(int) { } // { dg-message "candidate is" }
 };
 
 int main() {
index d8568dd..f43ed65 100644 (file)
@@ -3,7 +3,7 @@
 // Bug: g++ was crashing after giving errors.
 
 template<class T>
-  void connect_to_method( // { dg-message "candidates are" }
+  void connect_to_method( // { dg-message "candidate is" }
     T *receiver,
     void (T::*method)())
   {}