aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-01-16 18:39:58 +0000
committerMark Mitchell <mark@codesourcery.com>2004-01-16 18:39:58 +0000
commit57c6dc59c240a1899b3800e6fca4c1754336e9ed (patch)
tree6818ad65c074376c79d89ace6b1b77c0b768d406
parentf0ad7181392da48a99cec9b24a4836e174dc82c3 (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/ChangeLog4
-rw-r--r--gcc/cp/call.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/conversion/op1.C10
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" }
+}