Commit 3d09a9fd by Paolo Carlini Committed by Paolo Carlini

re PR c++/57352 (internal compiler error in cp_parser_abort_tentative_parse at cp/parser.c:22878)

/cp
2013-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/57352
	* parser.c (cp_parser_conversion_type_id): Set up
	parser->type_definition_forbidden_message before calling
	cp_parser_type_specifier_seq.

/testsuite
2013-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/57352
	* g++.dg/parse/crash62.C: New.

From-SVN: r199224
parent 4623df01
2013-05-22 Paolo Carlini <paolo.carlini@oracle.com> 2013-05-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57352
* parser.c (cp_parser_conversion_type_id): Set up
parser->type_definition_forbidden_message before calling
cp_parser_type_specifier_seq.
2013-05-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57211 PR c++/57211
* method.c (defaultable_fn_check): Avoid do_warn_unused_parameter * method.c (defaultable_fn_check): Avoid do_warn_unused_parameter
warnings about defaulted functions. warnings about defaulted functions.
......
...@@ -11715,13 +11715,22 @@ cp_parser_conversion_type_id (cp_parser* parser) ...@@ -11715,13 +11715,22 @@ cp_parser_conversion_type_id (cp_parser* parser)
cp_decl_specifier_seq type_specifiers; cp_decl_specifier_seq type_specifiers;
cp_declarator *declarator; cp_declarator *declarator;
tree type_specified; tree type_specified;
const char *saved_message;
/* Parse the attributes. */ /* Parse the attributes. */
attributes = cp_parser_attributes_opt (parser); attributes = cp_parser_attributes_opt (parser);
saved_message = parser->type_definition_forbidden_message;
parser->type_definition_forbidden_message
= G_("types may not be defined in a conversion-type-id");
/* Parse the type-specifiers. */ /* Parse the type-specifiers. */
cp_parser_type_specifier_seq (parser, /*is_declaration=*/false, cp_parser_type_specifier_seq (parser, /*is_declaration=*/false,
/*is_trailing_return=*/false, /*is_trailing_return=*/false,
&type_specifiers); &type_specifiers);
parser->type_definition_forbidden_message = saved_message;
/* If that didn't work, stop. */ /* If that didn't work, stop. */
if (type_specifiers.type == error_mark_node) if (type_specifiers.type == error_mark_node)
return error_mark_node; return error_mark_node;
......
2013-05-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57352
* g++.dg/parse/crash62.C: New.
2013-05-22 Michael Meissner <meissner@linux.vnet.ibm.com> 2013-05-22 Michael Meissner <meissner@linux.vnet.ibm.com>
Pat Haugen <pthaugen@us.ibm.com> Pat Haugen <pthaugen@us.ibm.com>
Peter Bergner <bergner@vnet.ibm.com> Peter Bergner <bergner@vnet.ibm.com>
......
// PR c++/57352
struct x
{
operator class {} (); // { dg-error "types|expected" }
};
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