/* primary-expression: literal this :: identifier :: operator-function-id :: qualifier-id ( expression ) id-expression */ static void pp_cxx_primary_expression (cxx_pretty_printer *pp, tree t) { switch (TREE_CODE (t)) { case STRING_CST: case INTEGER_CST: case REAL_CST: pp_c_constant (pp_c_base (pp), t); break; case BASELINK: t = BASELINK_FUNCTIONS (t); case VAR_DECL: case PARM_DECL: case FIELD_DECL: case FUNCTION_DECL: case OVERLOAD: case CONST_DECL: case TEMPLATE_DECL: pp_cxx_id_expression (pp, t); break; case RESULT_DECL: case TEMPLATE_TYPE_PARM: case TEMPLATE_PARM_INDEX: pp_cxx_unqualified_id (pp, t); break; default: pp_c_primary_expression (pp_c_base (pp), t); break; } }
static void pp_cxx_direct_declarator (cxx_pretty_printer *pp, tree t) { switch (TREE_CODE (t)) { case VAR_DECL: case PARM_DECL: case CONST_DECL: case FIELD_DECL: if (DECL_NAME (t)) { pp_cxx_space_for_pointer_operator (pp, TREE_TYPE (t)); pp_cxx_id_expression (pp, DECL_NAME (t)); } pp_cxx_abstract_declarator (pp, TREE_TYPE (t)); break; case FUNCTION_DECL: pp_cxx_space_for_pointer_operator (pp, TREE_TYPE (TREE_TYPE (t))); pp_cxx_id_expression (pp, t); pp_cxx_parameter_declaration_clause (pp, t); if (DECL_NONSTATIC_MEMBER_FUNCTION_P (t)) { pp_base (pp)->padding = pp_before; pp_cxx_cv_qualifier_seq (pp, pp_cxx_implicit_parameter_type (t)); } pp_cxx_exception_specification (pp, TREE_TYPE (t)); break; case TYPENAME_TYPE: case TEMPLATE_DECL: case TEMPLATE_TYPE_PARM: case TEMPLATE_PARM_INDEX: case TEMPLATE_TEMPLATE_PARM: break; default: pp_c_direct_declarator (pp_c_base (pp), t); break; } }