Hi, noticed these error messages. Tested x86_64-linux.
Thanks, Paolo. ///////////////
/cp 2014-07-01 Paolo Carlini <paolo.carl...@oracle.com> * pt.c (convert_template_argument): Use inform instead of error in three places. /testsuite 2014-07-01 Paolo Carlini <paolo.carl...@oracle.com> * g++.dg/cpp0x/variadic-ex10.C: Adjust for inform instead of error. * g++.dg/cpp0x/variadic-ex14.C: Likewise. * g++.dg/parse/error11.C: Likewise. * g++.old-deja/g++.brendan/template17.C: Likewise.
Index: cp/pt.c =================================================================== --- cp/pt.c (revision 212194) +++ cp/pt.c (working copy) @@ -6468,13 +6468,16 @@ convert_template_argument (tree parm, "parameter list for %qD", i + 1, in_decl); if (is_type) - error (" expected a constant of type %qT, got %qT", - TREE_TYPE (parm), - (DECL_P (arg) ? DECL_NAME (arg) : orig_arg)); + inform (input_location, + " expected a constant of type %qT, got %qT", + TREE_TYPE (parm), + (DECL_P (arg) ? DECL_NAME (arg) : orig_arg)); else if (requires_tmpl_type) - error (" expected a class template, got %qE", orig_arg); + inform (input_location, + " expected a class template, got %qE", orig_arg); else - error (" expected a type, got %qE", orig_arg); + inform (input_location, + " expected a type, got %qE", orig_arg); } } return error_mark_node; @@ -6487,9 +6490,11 @@ convert_template_argument (tree parm, "parameter list for %qD", i + 1, in_decl); if (is_tmpl_type) - error (" expected a type, got %qT", DECL_NAME (arg)); + inform (input_location, + " expected a type, got %qT", DECL_NAME (arg)); else - error (" expected a class template, got %qT", orig_arg); + inform (input_location, + " expected a class template, got %qT", orig_arg); } return error_mark_node; } @@ -6537,8 +6542,9 @@ convert_template_argument (tree parm, error ("type/value mismatch at argument %d in " "template parameter list for %qD", i + 1, in_decl); - error (" expected a template of type %qD, got %qT", - parm, orig_arg); + inform (input_location, + " expected a template of type %qD, got %qT", + parm, orig_arg); } val = error_mark_node; Index: testsuite/g++.dg/cpp0x/variadic-ex10.C =================================================================== --- testsuite/g++.dg/cpp0x/variadic-ex10.C (revision 212194) +++ testsuite/g++.dg/cpp0x/variadic-ex10.C (working copy) @@ -5,5 +5,5 @@ Tuple<> t0; // Types contains no arguments Tuple<int> t1; // Types contains one argument: int Tuple<int, float> t2; // Types contains two arguments: int and float Tuple<0> error; // { dg-error "mismatch" "mismatch" } -// { dg-error "expected a type" "expected a type" { target *-*-* } 7 } +// { dg-message "expected a type" "expected a type" { target *-*-* } 7 } // { dg-error "in declaration" "in declaration" { target *-*-* } 7 } Index: testsuite/g++.dg/cpp0x/variadic-ex14.C =================================================================== --- testsuite/g++.dg/cpp0x/variadic-ex14.C (revision 212194) +++ testsuite/g++.dg/cpp0x/variadic-ex14.C (working copy) @@ -9,10 +9,10 @@ template<template<class...> class Q> class Y { /* X<A> xA; // okay X<B> xB; // { dg-error "mismatch" "mismatch" } -// { dg-error "expected a template" "expected" { target *-*-* } 11 } +// { dg-message "expected a template" "expected" { target *-*-* } 11 } // { dg-error "invalid type" "invalid" { target *-*-* } 11 } X<C> xC; // { dg-error "mismatch" "mismatch" } -// { dg-error "expected a template" "expected" { target *-*-* } 14 } +// { dg-message "expected a template" "expected" { target *-*-* } 14 } // { dg-error "invalid type" "invalid" { target *-*-* } 14 } Y<A> yA; Y<B> yB; Index: testsuite/g++.dg/parse/error11.C =================================================================== --- testsuite/g++.dg/parse/error11.C (revision 212194) +++ testsuite/g++.dg/parse/error11.C (working copy) @@ -33,7 +33,7 @@ template <int N> struct Foo2 {}; template struct Foo2<::B>; // { dg-error "21:'<::' cannot begin" "begin" { target { ! c++11 } } } // { dg-message "21:'<:' is an alternate" "alt" { target { ! c++11 } } 33 } // { dg-message "25:type/value mismatch" "mismatch" { target *-*-* } 33 } -// { dg-error "25:expected a constant" "const" { target *-*-* } 33 } +// { dg-message "25:expected a constant" "const" { target *-*-* } 33 } int value = 0; Index: testsuite/g++.old-deja/g++.brendan/template17.C =================================================================== --- testsuite/g++.old-deja/g++.brendan/template17.C (revision 212194) +++ testsuite/g++.old-deja/g++.brendan/template17.C (working copy) @@ -9,7 +9,7 @@ class NDAMName { }; const Regex NDAMName<'L'>::pattern("^[Ll](.*)$", 1);// { dg-error "type/value mismatch" "mismatch" } -// { dg-error "expected a type" "expected" { target *-*-* } 11 } +// { dg-message "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-message "expected a type" "exp" { target *-*-* } 14 }