From a293ed6ec64c9a5364c72fc96e08e345d0104822 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Mon, 20 May 2013 09:44:20 +0000 Subject: re PR c++/57327 ('derived' is an ambiguous base class of 'base' diagnostic is backwards) /cp 2013-05-20 Paolo Carlini PR c++/57327 * pt.c (unify_no_common_base): Swap arg and parm arguments to inform. /testsuite 2013-05-20 Paolo Carlini PR c++/57327 * g++.dg/template/error50.C: New. From-SVN: r199097 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/pt.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/error50.C | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/error50.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index dd53e69..9d8ad50 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2013-05-20 Paolo Carlini + PR c++/57327 + * pt.c (unify_no_common_base): Swap arg and parm arguments to inform. + +2013-05-20 Paolo Carlini + PR c++/10207 * parser.c (cp_parser_postfix_expression): Use cp_parser_braced_list instead of cp_parser_initializer_list for compound-literals. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index b0be950..7b80b91 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5375,7 +5375,7 @@ unify_no_common_base (bool explain_p, enum template_base_result r, { case tbr_ambiguous_baseclass: inform (input_location, " %qT is an ambiguous base class of %qT", - arg, parm); + parm, arg); break; default: inform (input_location, " %qT is not derived from %qT", arg, parm); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dfde009..52c52ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2013-05-20 Paolo Carlini + PR c++/57327 + * g++.dg/template/error50.C: New. + +2013-05-20 Paolo Carlini + PR c++/10207 * g++.dg/ext/complit13.C: New. diff --git a/gcc/testsuite/g++.dg/template/error50.C b/gcc/testsuite/g++.dg/template/error50.C new file mode 100644 index 0000000..d8702f8 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/error50.C @@ -0,0 +1,19 @@ +// PR c++/57327 + +template +struct A {}; + +template +void f(A&) {} + +struct B : A {}; + +struct C : A {}; + +struct D : B, C {}; + +int main() +{ + D d; + f(d); // { dg-error "no matching" } +} // { dg-message "'A' is an ambiguous base" "" { target *-*-* } 18 } -- cgit v1.1