re PR c++/20461 (ICE at "class 'C' does not have any field named 'f'" error)

2005-03-21  Paolo Carlini  <pcarlini@suse.de>

	PR c++/20461
	PR c++/20536
	* init.c (emit_mem_initializers): Don't crash on undefined
	types.

2005-03-21  Paolo Carlini  <pcarlini@suse.de>

	PR c++/20147
	* semantics.c (finish_stmt_expr_expr): Return immediately
	if error_operand_p (expr).

From-SVN: r96784
This commit is contained in:
Paolo Carlini 2005-03-21 11:49:32 +00:00 committed by Paolo Carlini
parent a16095f6eb
commit 72e4661a25
3 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,16 @@
2005-03-21 Paolo Carlini <pcarlini@suse.de>
PR c++/20461
PR c++/20536
* init.c (emit_mem_initializers): Don't crash on undefined
types.
2005-03-21 Paolo Carlini <pcarlini@suse.de>
PR c++/20147
* semantics.c (finish_stmt_expr_expr): Return immediately
if error_operand_p (expr).
2005-03-21 Joseph S. Myers <joseph@codesourcery.com>
* cp-tree.h (lvalue_or_else, lvalue_p): New.

View File

@ -655,6 +655,11 @@ sort_mem_initializers (tree t, tree mem_inits)
void
emit_mem_initializers (tree mem_inits)
{
/* We will already have issued an error message about the fact that
the type is incomplete. */
if (!COMPLETE_TYPE_P (current_class_type))
return;
/* Sort the mem-initializers into the order in which the
initializations should be performed. */
mem_inits = sort_mem_initializers (current_class_type, mem_inits);

View File

@ -1523,6 +1523,9 @@ finish_stmt_expr_expr (tree expr, tree stmt_expr)
{
tree result = NULL_TREE;
if (error_operand_p (expr))
return error_mark_node;
if (expr)
{
if (!processing_template_decl && !VOID_TYPE_P (TREE_TYPE (expr)))