aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-01-16 18:39:58 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-01-16 18:39:58 +0000
commit144e414d26bf3d2daff9456456cfd9abeb5cfcda (patch)
tree6818ad65c074376c79d89ace6b1b77c0b768d406 /gcc
parent9e0baa604103abcb676222364f1fa51e1f006203 (diff)
downloadgcc-144e414d26bf3d2daff9456456cfd9abeb5cfcda.zip
gcc-144e414d26bf3d2daff9456456cfd9abeb5cfcda.tar.gz
gcc-144e414d26bf3d2daff9456456cfd9abeb5cfcda.tar.bz2
re PR c++/13178 (Bogus C++ error message referring to operator 1)
PR c++/13178 * call.c (name_as_c_string): Print conversion operator names correctly. PR c++/13178 * g++.dg/conversion/op1.C: New test. From-SVN: r75986
Diffstat (limited to 'gcc')
-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 c2458ab..06733cc 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 aaf902c..7864d08 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 b5d83dc..573156e 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 0000000..3aa21c7
--- /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" }
+}