aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1998-01-24 12:26:46 +0000
committerJason Merrill <jason@gcc.gnu.org>1998-01-24 07:26:46 -0500
commit67c2a92854761b0dcf05a6c2d0fa636a55e6be60 (patch)
tree486bd343ea1874954c3ea6364683ad1834d86e03
parentb7a290122f69b91951a58140fb319e0f68049218 (diff)
downloadgcc-67c2a92854761b0dcf05a6c2d0fa636a55e6be60.zip
gcc-67c2a92854761b0dcf05a6c2d0fa636a55e6be60.tar.gz
gcc-67c2a92854761b0dcf05a6c2d0fa636a55e6be60.tar.bz2
error.c (dump_decl): Fix type default template args.
* error.c (dump_decl): Fix type default template args. (dump_type): Hand TEMPLATE_DECL off to dump_decl. From-SVN: r17470
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/error.c58
2 files changed, 10 insertions, 53 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 38b4afd..7fb9c4d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jan 24 12:13:54 1998 Jason Merrill <jason@yorick.cygnus.com>
+
+ * error.c (dump_decl): Fix type default template args.
+ (dump_type): Hand TEMPLATE_DECL off to dump_decl.
+
Fri Jan 23 18:34:37 1998 Mumit Khan <khan@xraylith.wisc.edu>
* lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 2cc5c84..2465440 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -207,6 +207,7 @@ dump_type (t, v)
break;
case TYPE_DECL:
+ case TEMPLATE_DECL:
dump_decl (t, v);
break;
@@ -229,58 +230,6 @@ dump_type (t, v)
OB_PUTID (TYPE_IDENTIFIER (t));
break;
- /* A substituted template template parameter. Default template
- argument handling are different from dump_decl. */
- case TEMPLATE_DECL:
- {
- tree orig_args = DECL_TEMPLATE_PARMS (t);
- tree args;
- int i;
- for (args = orig_args = nreverse (orig_args);
- args;
- args = TREE_CHAIN (args))
- {
- int len = TREE_VEC_LENGTH (TREE_VALUE (args));
-
- OB_PUTS ("template <");
- for (i = 0; i < len; i++)
- {
- tree arg = TREE_VEC_ELT (TREE_VALUE (args), i);
- tree defval = TREE_PURPOSE (arg);
- arg = TREE_VALUE (arg);
- if (TREE_CODE (arg) == TYPE_DECL)
- {
- if (DECL_NAME (arg))
- {
- OB_PUTS ("class ");
- OB_PUTID (DECL_NAME (arg));
- }
- else
- OB_PUTS ("class");
- }
- else
- dump_decl (arg, 1);
-
- if (defval)
- {
- OB_PUTS (" = ");
- if (TREE_CODE (arg) == TYPE_DECL)
- dump_type (defval, 1);
- else
- dump_expr (defval, 1);
- }
-
- OB_PUTC2 (',', ' ');
- }
- if (len != 0)
- OB_UNPUT (2);
- OB_PUTC2 ('>', ' ');
- }
- nreverse(orig_args);
- dump_type (TREE_TYPE (t), v);
- }
- break;
-
case TEMPLATE_TEMPLATE_PARM:
if (!CLASSTYPE_TEMPLATE_INFO (t))
{
@@ -837,7 +786,10 @@ dump_decl (t, v)
if (defval)
{
OB_PUTS (" = ");
- dump_decl (defval, 1);
+ if (TREE_CODE (arg) == TYPE_DECL)
+ dump_type (defval, 1);
+ else
+ dump_decl (defval, 1);
}
OB_PUTC2 (',', ' ');