diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-01-16 18:39:58 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 2004-01-16 18:39:58 +0000 |
commit | 57c6dc59c240a1899b3800e6fca4c1754336e9ed (patch) | |
tree | 6818ad65c074376c79d89ace6b1b77c0b768d406 | |
parent | f0ad7181392da48a99cec9b24a4836e174dc82c3 (diff) |
PR c++/13178
* call.c (name_as_c_string): Print conversion operator names
correctly.
PR c++/13178
* g++.dg/conversion/op1.C: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@75986 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/call.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/conversion/op1.C | 10 |
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c2458abfe86..06733cc329d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2004-01-16 Mark Mitchell <mark@codesourcery.com> + PR c++/13178 + * call.c (name_as_c_string): Print conversion operator names + correctly. + PR c++/13478 * call.c (initialize_reference): Pass -1 for inner parameter to convert_like_real. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index aaf902ceed6..7864d088206 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4986,6 +4986,15 @@ name_as_c_string (tree name, tree type, bool *free_p) *free_p = true; } } + else if (IDENTIFIER_TYPENAME_P (name)) + { + pretty_name = concat ("operator ", + type_as_string (TREE_TYPE (name), + TFF_PLAIN_IDENTIFIER), + NULL); + /* Remember that we need to free the memory allocated. */ + *free_p = true; + } else pretty_name = (char *) IDENTIFIER_POINTER (name); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b5d83dcd90e..573156e2701 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-01-16 Mark Mitchell <mark@codesourcery.com> + + PR c++/13178 + * g++.dg/conversion/op1.C: New test. + 2004-01-16 J"orn Rennecke <joern.rennecke@superh.com> PR 10392 diff --git a/gcc/testsuite/g++.dg/conversion/op1.C b/gcc/testsuite/g++.dg/conversion/op1.C new file mode 100644 index 00000000000..3aa21c7780e --- /dev/null +++ b/gcc/testsuite/g++.dg/conversion/op1.C @@ -0,0 +1,10 @@ +class C +{ + template<typename U> + operator U(); +}; + +int fn (C c) +{ + return C::operator float(c); // { dg-error "operator U" } +} |