re PR fortran/32928 (DATA statement with array element as initializer is rejected)

2007-11-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32928
	* decl.c (match_data_constant): Use gfc_match_init_expr to match the
	array spec and set the initializer expression.

From-SVN: r130484
This commit is contained in:
Jerry DeLisle 2007-11-28 01:02:36 +00:00
parent f69ab0e0c4
commit d46e0870c0
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/32928
* decl.c (match_data_constant): Use gfc_match_init_expr to match the
array spec and set the initializer expression.
2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/34227

View File

@ -370,6 +370,30 @@ match_data_constant (gfc_expr **result)
else if (sym->attr.flavor == FL_DERIVED)
return gfc_match_structure_constructor (sym, result);
/* Check to see if the value is an initialization array expression. */
if (sym->value->expr_type == EXPR_ARRAY)
{
gfc_current_locus = old_loc;
m = gfc_match_init_expr (result);
if (m == MATCH_ERROR)
return m;
if (m == MATCH_YES)
{
if (gfc_simplify_expr (*result, 0) == FAILURE)
m = MATCH_ERROR;
if ((*result)->expr_type == EXPR_CONSTANT)
return m;
else
{
gfc_error ("Invalid initializer %s in Data statement at %C", name);
return MATCH_ERROR;
}
}
}
*result = gfc_copy_expr (sym->value);
return MATCH_YES;
}