Commit f3e4d63c by Jason Merrill Committed by Jason Merrill

ptree.c (print_lang_type): Print the real type of a PMF.

	* ptree.c (print_lang_type): Print the real type of a PMF.
	Print what exceptions a fn type throws.

	* typeck.c (common_type): Use same_type_p.

And revert:
	* decl.c (bad_specifiers): It's OK to have an EH spec on a function
	pointer.

From-SVN: r28609
parent cb35be57
1999-08-08 Jason Merrill <jason@yorick.cygnus.com>
* ptree.c (print_lang_type): Print the real type of a PMF.
Print what exceptions a fn type throws.
* typeck.c (common_type): Use same_type_p.
1999-08-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 1999-08-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* class.c (count_fields, add_fields_to_vec): Add static prototype. * class.c (count_fields, add_fields_to_vec): Add static prototype.
...@@ -37,9 +44,6 @@ ...@@ -37,9 +44,6 @@
1999-08-06 Jason Merrill <jason@yorick.cygnus.com> 1999-08-06 Jason Merrill <jason@yorick.cygnus.com>
* decl.c (bad_specifiers): It's OK to have an EH spec on a function
pointer.
* pt.c (maybe_get_template_decl_from_type_decl): Make sure that * pt.c (maybe_get_template_decl_from_type_decl): Make sure that
we're looking at a class. we're looking at a class.
......
...@@ -8363,7 +8363,7 @@ bad_specifiers (object, type, virtualp, quals, inlinep, friendp, raises) ...@@ -8363,7 +8363,7 @@ bad_specifiers (object, type, virtualp, quals, inlinep, friendp, raises)
object, type); object, type);
if (friendp) if (friendp)
cp_error_at ("`%D' declared as a friend", object); cp_error_at ("`%D' declared as a friend", object);
if (raises && ! TYPE_PTRFN_P (TREE_TYPE (object))) if (raises)
cp_error_at ("`%D' declared with an exception specification", object); cp_error_at ("`%D' declared with an exception specification", object);
} }
......
...@@ -73,9 +73,10 @@ print_lang_type (file, node, indent) ...@@ -73,9 +73,10 @@ print_lang_type (file, node, indent)
register tree node; register tree node;
int indent; int indent;
{ {
if (TREE_CODE (node) == TEMPLATE_TYPE_PARM switch (TREE_CODE (node))
|| TREE_CODE (node) == TEMPLATE_TEMPLATE_PARM)
{ {
case TEMPLATE_TYPE_PARM:
case TEMPLATE_TEMPLATE_PARM:
indent_to (file, indent + 3); indent_to (file, indent + 3);
fputs ("index ", file); fputs ("index ", file);
fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_IDX (node)); fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_IDX (node));
...@@ -84,8 +85,25 @@ print_lang_type (file, node, indent) ...@@ -84,8 +85,25 @@ print_lang_type (file, node, indent)
fputs (" orig_level ", file); fputs (" orig_level ", file);
fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_ORIG_LEVEL (node)); fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_ORIG_LEVEL (node));
return; return;
case FUNCTION_TYPE:
case METHOD_TYPE:
if (TYPE_RAISES_EXCEPTIONS (node))
print_node (file, "throws", TYPE_RAISES_EXCEPTIONS (node), indent + 4);
return;
case RECORD_TYPE:
case UNION_TYPE:
break;
default:
return;
} }
if (TYPE_PTRMEMFUNC_P (node))
print_node (file, "ptrmemfunc fn type", TYPE_PTRMEMFUNC_FN_TYPE (node),
indent + 4);
if (! CLASS_TYPE_P (node)) if (! CLASS_TYPE_P (node))
return; return;
......
...@@ -699,7 +699,7 @@ common_type (t1, t2) ...@@ -699,7 +699,7 @@ common_type (t1, t2)
tt1 = TYPE_MAIN_VARIANT (tt1); tt1 = TYPE_MAIN_VARIANT (tt1);
tt2 = TYPE_MAIN_VARIANT (tt2); tt2 = TYPE_MAIN_VARIANT (tt2);
if (tt1 == tt2) if (same_type_p (tt1, tt2))
target = tt1; target = tt1;
else if (b1) else if (b1)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment