+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.
break;
case TYPE_DECL:
+ case TEMPLATE_DECL:
dump_decl (t, v);
break;
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))
{
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 (',', ' ');