diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2003-03-21 15:42:36 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2003-03-21 15:42:36 +0000 |
commit | f3146d75a925306d35d582c3c927d06ce93aa03d (patch) | |
tree | 3e7d8b64875f583eb668a0b9ec42505d04c42847 /gcc | |
parent | 526278c97fe19c97ce04c66238127097fe4da76b (diff) | |
download | gcc-f3146d75a925306d35d582c3c927d06ce93aa03d.zip gcc-f3146d75a925306d35d582c3c927d06ce93aa03d.tar.gz gcc-f3146d75a925306d35d582c3c927d06ce93aa03d.tar.bz2 |
re PR c++/9898 (Template reference cast operator of template class)
cp:
PR c++/9898
* error.c (dump_decl) [CONST_DECL]: Print '<enumerator>'.
(dump_expr) [CONSTRUCTOR]: Print default ctor as a function call.
testsuite:
PR c++/9898
* g++.dg/other/error4.C: New test.
From-SVN: r64667
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/error.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/error4.C | 15 |
4 files changed, 40 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9b0eaf1..2546ea1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-03-21 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/9898 + * error.c (dump_decl) [CONST_DECL]: Print '<enumerator>'. + (dump_expr) [CONSTRUCTOR]: Print default ctor as a function call. + 2003-03-20 Mark Mitchell <mark@codesourcery.com> * cp/decl2.c (arg_assoc_class): Correct check for namespace-scope diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 42a7ff7..e687ac0 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -971,7 +971,7 @@ dump_decl (tree t, int flags) else if (DECL_INITIAL (t)) dump_expr (DECL_INITIAL (t), flags | TFF_EXPR_IN_PARENS); else - print_identifier (scratch_buffer, "enumerator"); + print_identifier (scratch_buffer, "<enumerator>"); break; case USING_DECL: @@ -1844,9 +1844,19 @@ dump_expr (tree t, int flags) } } } - output_add_character (scratch_buffer, '{'); - dump_expr_list (CONSTRUCTOR_ELTS (t), flags); - output_add_character (scratch_buffer, '}'); + if (TREE_TYPE (t) && !CONSTRUCTOR_ELTS (t)) + { + dump_type (TREE_TYPE (t), 0); + output_add_character (scratch_buffer, '('); + output_add_character (scratch_buffer, ')'); + } + else + { + output_add_character (scratch_buffer, '{'); + dump_expr_list (CONSTRUCTOR_ELTS (t), flags); + output_add_character (scratch_buffer, '}'); + } + break; case OFFSET_REF: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a76454b..9bda0cd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-03-21 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/9898 + * g++.dg/other/error4.C: New test. + 2003-03-20 Mark Mitchell <mark@codesourcery.com> * g++.dg/template/friend17.C: New test. diff --git a/gcc/testsuite/g++.dg/other/error4.C b/gcc/testsuite/g++.dg/other/error4.C new file mode 100644 index 0000000..39a612b --- /dev/null +++ b/gcc/testsuite/g++.dg/other/error4.C @@ -0,0 +1,15 @@ +// { dg-do compile } + +// Copyright (C) 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 21 Mar 2003 <nathan@codesourcery.com> + +// PR 9898. Confusing error message + +struct Wrapper {}; + +void Foo(int const &); // { dg-error "in passing" "" } + +void Baz () +{ + Foo (Wrapper ()); // { dg-error "convert `Wrapper *\\(\\)' to" "" } +} |