Commit 7c26172c by Gabriel Dos Reis Committed by Gabriel Dos Reis

c-pretty-print.h (c_pretty_printer::simple_type_specifier): Now a virtual member function.

c-family/
	* c-pretty-print.h (c_pretty_printer::simple_type_specifier): Now
	a virtual member function.
	(pp_simple_type_specifier): Remove.
	(pp_c_type_specifier): Likewise.
	* c-pretty-print.c (c_pretty_printer::simple_type_specifier):
	Rename from pp_c_type_specifier.  Adjust.
	(c_pretty_printer::c_pretty_printer): Do not assign to
	simple_type_specifier.
cp/
	* cxx-pretty-print.h (cxx_pretty_printer::simple_type_specifier):
	Declare as overrider.
	* cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier):
	Rename from pp_cxx_simple_type_specifier.
	(cxx_pretty_printer::cxx_pretty_printer): Do not assign to
	simple_type_specifier.

From-SVN: r202247
parent 5f3783a6
2013-09-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
* c-pretty-print.h (c_pretty_printer::simple_type_specifier): Now
a virtual member function.
(pp_simple_type_specifier): Remove.
(pp_c_type_specifier): Likewise.
* c-pretty-print.c (c_pretty_printer::simple_type_specifier):
Rename from pp_c_type_specifier. Adjust.
(c_pretty_printer::c_pretty_printer): Do not assign to
simple_type_specifier.
2013-09-03 Gabriel Dos Reis <gdr@integrable-solutions.net> 2013-09-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
* c-pretty-print.h (c_pretty_printer::type_id): Now a virtual * c-pretty-print.h (c_pretty_printer::type_id): Now a virtual
......
...@@ -305,7 +305,10 @@ pp_c_pointer (c_pretty_printer *pp, tree t) ...@@ -305,7 +305,10 @@ pp_c_pointer (c_pretty_printer *pp, tree t)
} }
} }
/* type-specifier: /* simple-type-specifier:
type-specifier
type-specifier:
void void
char char
short short
...@@ -328,17 +331,17 @@ pp_c_pointer (c_pretty_printer *pp, tree t) ...@@ -328,17 +331,17 @@ pp_c_pointer (c_pretty_printer *pp, tree t)
__vector__ */ __vector__ */
void void
pp_c_type_specifier (c_pretty_printer *pp, tree t) c_pretty_printer::simple_type_specifier (tree t)
{ {
const enum tree_code code = TREE_CODE (t); const enum tree_code code = TREE_CODE (t);
switch (code) switch (code)
{ {
case ERROR_MARK: case ERROR_MARK:
pp->translate_string ("<type-error>"); translate_string ("<type-error>");
break; break;
case IDENTIFIER_NODE: case IDENTIFIER_NODE:
pp_c_identifier (pp, IDENTIFIER_POINTER (t)); pp_c_identifier (this, IDENTIFIER_POINTER (t));
break; break;
case VOID_TYPE: case VOID_TYPE:
...@@ -349,7 +352,7 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) ...@@ -349,7 +352,7 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
if (TYPE_NAME (t)) if (TYPE_NAME (t))
{ {
t = TYPE_NAME (t); t = TYPE_NAME (t);
pp_c_type_specifier (pp, t); simple_type_specifier (t);
} }
else else
{ {
...@@ -360,11 +363,11 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) ...@@ -360,11 +363,11 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
t = c_common_type_for_mode (TYPE_MODE (t), TYPE_UNSIGNED (t)); t = c_common_type_for_mode (TYPE_MODE (t), TYPE_UNSIGNED (t));
if (TYPE_NAME (t)) if (TYPE_NAME (t))
{ {
pp_c_type_specifier (pp, t); simple_type_specifier (t);
if (TYPE_PRECISION (t) != prec) if (TYPE_PRECISION (t) != prec)
{ {
pp_colon (pp); pp_colon (this);
pp_decimal_int (pp, prec); pp_decimal_int (this, prec);
} }
} }
else else
...@@ -372,52 +375,52 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) ...@@ -372,52 +375,52 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
switch (code) switch (code)
{ {
case INTEGER_TYPE: case INTEGER_TYPE:
pp->translate_string (TYPE_UNSIGNED (t) translate_string (TYPE_UNSIGNED (t)
? "<unnamed-unsigned:" ? "<unnamed-unsigned:"
: "<unnamed-signed:"); : "<unnamed-signed:");
break; break;
case REAL_TYPE: case REAL_TYPE:
pp->translate_string ("<unnamed-float:"); translate_string ("<unnamed-float:");
break; break;
case FIXED_POINT_TYPE: case FIXED_POINT_TYPE:
pp->translate_string ("<unnamed-fixed:"); translate_string ("<unnamed-fixed:");
break; break;
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
pp_decimal_int (pp, prec); pp_decimal_int (this, prec);
pp_greater (pp); pp_greater (this);
} }
} }
break; break;
case TYPE_DECL: case TYPE_DECL:
if (DECL_NAME (t)) if (DECL_NAME (t))
pp->id_expression (t); id_expression (t);
else else
pp->translate_string ("<typedef-error>"); translate_string ("<typedef-error>");
break; break;
case UNION_TYPE: case UNION_TYPE:
case RECORD_TYPE: case RECORD_TYPE:
case ENUMERAL_TYPE: case ENUMERAL_TYPE:
if (code == UNION_TYPE) if (code == UNION_TYPE)
pp_c_ws_string (pp, "union"); pp_c_ws_string (this, "union");
else if (code == RECORD_TYPE) else if (code == RECORD_TYPE)
pp_c_ws_string (pp, "struct"); pp_c_ws_string (this, "struct");
else if (code == ENUMERAL_TYPE) else if (code == ENUMERAL_TYPE)
pp_c_ws_string (pp, "enum"); pp_c_ws_string (this, "enum");
else else
pp->translate_string ("<tag-error>"); translate_string ("<tag-error>");
if (TYPE_NAME (t)) if (TYPE_NAME (t))
pp->id_expression (TYPE_NAME (t)); id_expression (TYPE_NAME (t));
else else
pp->translate_string ("<anonymous>"); translate_string ("<anonymous>");
break; break;
default: default:
pp_unsupported_tree (pp, t); pp_unsupported_tree (this, t);
break; break;
} }
} }
...@@ -483,7 +486,7 @@ pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t) ...@@ -483,7 +486,7 @@ pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t)
break; break;
default: default:
pp_simple_type_specifier (pp, t); pp->simple_type_specifier (t);
break; break;
} }
if ((pp->flags & pp_c_flag_gnu_v3) && code != POINTER_TYPE) if ((pp->flags & pp_c_flag_gnu_v3) && code != POINTER_TYPE)
...@@ -2328,7 +2331,6 @@ c_pretty_printer::c_pretty_printer () ...@@ -2328,7 +2331,6 @@ c_pretty_printer::c_pretty_printer ()
type_specifier_seq = pp_c_specifier_qualifier_list; type_specifier_seq = pp_c_specifier_qualifier_list;
ptr_operator = pp_c_pointer; ptr_operator = pp_c_pointer;
parameter_list = pp_c_parameter_type_list; parameter_list = pp_c_parameter_type_list;
simple_type_specifier = pp_c_type_specifier;
} }
......
...@@ -69,6 +69,7 @@ struct c_pretty_printer : pretty_printer ...@@ -69,6 +69,7 @@ struct c_pretty_printer : pretty_printer
virtual void declaration (tree); virtual void declaration (tree);
virtual void declaration_specifiers (tree); virtual void declaration_specifiers (tree);
virtual void simple_type_specifier (tree);
virtual void function_specifier (tree); virtual void function_specifier (tree);
virtual void storage_class_specifier (tree); virtual void storage_class_specifier (tree);
virtual void declarator (tree); virtual void declarator (tree);
...@@ -88,7 +89,6 @@ struct c_pretty_printer : pretty_printer ...@@ -88,7 +89,6 @@ struct c_pretty_printer : pretty_printer
c_pretty_print_fn type_specifier_seq; c_pretty_print_fn type_specifier_seq;
c_pretty_print_fn ptr_operator; c_pretty_print_fn ptr_operator;
c_pretty_print_fn parameter_list; c_pretty_print_fn parameter_list;
c_pretty_print_fn simple_type_specifier;
}; };
#define pp_c_tree_identifier(PPI, ID) \ #define pp_c_tree_identifier(PPI, ID) \
...@@ -97,7 +97,6 @@ struct c_pretty_printer : pretty_printer ...@@ -97,7 +97,6 @@ struct c_pretty_printer : pretty_printer
#define pp_type_specifier_seq(PP, D) (PP)->type_specifier_seq (PP, D) #define pp_type_specifier_seq(PP, D) (PP)->type_specifier_seq (PP, D)
#define pp_ptr_operator(PP, D) (PP)->ptr_operator (PP, D) #define pp_ptr_operator(PP, D) (PP)->ptr_operator (PP, D)
#define pp_parameter_list(PP, T) (PP)->parameter_list (PP, T) #define pp_parameter_list(PP, T) (PP)->parameter_list (PP, T)
#define pp_simple_type_specifier(PP, T) (PP)->simple_type_specifier (PP, T)
void pp_c_whitespace (c_pretty_printer *); void pp_c_whitespace (c_pretty_printer *);
void pp_c_left_paren (c_pretty_printer *); void pp_c_left_paren (c_pretty_printer *);
...@@ -124,7 +123,6 @@ void pp_c_cv_qualifiers (c_pretty_printer *pp, int qualifiers, bool func_type); ...@@ -124,7 +123,6 @@ void pp_c_cv_qualifiers (c_pretty_printer *pp, int qualifiers, bool func_type);
void pp_c_type_qualifier_list (c_pretty_printer *, tree); void pp_c_type_qualifier_list (c_pretty_printer *, tree);
void pp_c_parameter_type_list (c_pretty_printer *, tree); void pp_c_parameter_type_list (c_pretty_printer *, tree);
void pp_c_specifier_qualifier_list (c_pretty_printer *, tree); void pp_c_specifier_qualifier_list (c_pretty_printer *, tree);
void pp_c_type_specifier (c_pretty_printer *, tree);
/* Expressions. */ /* Expressions. */
void pp_c_logical_or_expression (c_pretty_printer *, tree); void pp_c_logical_or_expression (c_pretty_printer *, tree);
void pp_c_expression_list (c_pretty_printer *, tree); void pp_c_expression_list (c_pretty_printer *, tree);
......
2013-09-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
* cxx-pretty-print.h (cxx_pretty_printer::simple_type_specifier):
Declare as overrider.
* cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier):
Rename from pp_cxx_simple_type_specifier.
(cxx_pretty_printer::cxx_pretty_printer): Do not assign to
simple_type_specifier.
2013-09-03 Paolo Carlini <paolo.carlini@oracle.com> 2013-09-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58305 PR c++/58305
......
...@@ -1249,32 +1249,32 @@ cxx_pretty_printer::declaration_specifiers (tree t) ...@@ -1249,32 +1249,32 @@ cxx_pretty_printer::declaration_specifiers (tree t)
double double
void */ void */
static void void
pp_cxx_simple_type_specifier (cxx_pretty_printer *pp, tree t) cxx_pretty_printer::simple_type_specifier (tree t)
{ {
switch (TREE_CODE (t)) switch (TREE_CODE (t))
{ {
case RECORD_TYPE: case RECORD_TYPE:
case UNION_TYPE: case UNION_TYPE:
case ENUMERAL_TYPE: case ENUMERAL_TYPE:
pp_cxx_qualified_id (pp, t); pp_cxx_qualified_id (this, t);
break; break;
case TEMPLATE_TYPE_PARM: case TEMPLATE_TYPE_PARM:
case TEMPLATE_TEMPLATE_PARM: case TEMPLATE_TEMPLATE_PARM:
case TEMPLATE_PARM_INDEX: case TEMPLATE_PARM_INDEX:
case BOUND_TEMPLATE_TEMPLATE_PARM: case BOUND_TEMPLATE_TEMPLATE_PARM:
pp_cxx_unqualified_id (pp, t); pp_cxx_unqualified_id (this, t);
break; break;
case TYPENAME_TYPE: case TYPENAME_TYPE:
pp_cxx_ws_string (pp, "typename"); pp_cxx_ws_string (this, "typename");
pp_cxx_nested_name_specifier (pp, TYPE_CONTEXT (t)); pp_cxx_nested_name_specifier (this, TYPE_CONTEXT (t));
pp_cxx_unqualified_id (pp, TYPE_NAME (t)); pp_cxx_unqualified_id (this, TYPE_NAME (t));
break; break;
default: default:
pp_c_type_specifier (pp, t); c_pretty_printer::simple_type_specifier (t);
break; break;
} }
} }
...@@ -1300,7 +1300,7 @@ pp_cxx_type_specifier_seq (cxx_pretty_printer *pp, tree t) ...@@ -1300,7 +1300,7 @@ pp_cxx_type_specifier_seq (cxx_pretty_printer *pp, tree t)
case TYPE_DECL: case TYPE_DECL:
case BOUND_TEMPLATE_TEMPLATE_PARM: case BOUND_TEMPLATE_TEMPLATE_PARM:
pp_cxx_cv_qualifier_seq (pp, t); pp_cxx_cv_qualifier_seq (pp, t);
pp_cxx_simple_type_specifier (pp, t); pp->simple_type_specifier (t);
break; break;
case METHOD_TYPE: case METHOD_TYPE:
...@@ -2427,5 +2427,4 @@ cxx_pretty_printer::cxx_pretty_printer () ...@@ -2427,5 +2427,4 @@ cxx_pretty_printer::cxx_pretty_printer ()
type_specifier_seq = (pp_fun) pp_cxx_type_specifier_seq; type_specifier_seq = (pp_fun) pp_cxx_type_specifier_seq;
parameter_list = (pp_fun) pp_cxx_parameter_declaration_clause; parameter_list = (pp_fun) pp_cxx_parameter_declaration_clause;
simple_type_specifier = (pp_fun) pp_cxx_simple_type_specifier;
} }
...@@ -46,6 +46,7 @@ struct cxx_pretty_printer : c_pretty_printer ...@@ -46,6 +46,7 @@ struct cxx_pretty_printer : c_pretty_printer
void statement (tree); void statement (tree);
void declaration (tree); void declaration (tree);
void declaration_specifiers (tree); void declaration_specifiers (tree);
void simple_type_specifier (tree);
void function_specifier (tree); void function_specifier (tree);
void declarator (tree); void declarator (tree);
void direct_declarator (tree); void direct_declarator (tree);
......
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