diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1998-01-24 12:26:46 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-01-24 07:26:46 -0500 |
commit | 67c2a92854761b0dcf05a6c2d0fa636a55e6be60 (patch) | |
tree | 486bd343ea1874954c3ea6364683ad1834d86e03 | |
parent | b7a290122f69b91951a58140fb319e0f68049218 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/error.c | 58 |
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 (',', ' '); |