Commit 1de8a836 by Victor Leikehman Committed by Paul Brook

* decl.c (add_init_expr_to_sym): Check for variable size arrays.

From-SVN: r81894
parent e2bb53e5
2004-05-15 Victor Leikehman <lei@haifasphere.co.il>
* decl.c (add_init_expr_to_sym): Check for variable size arrays.
2004-05-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* primary.c (match_boz_constant): Use gfc_notify_std() for
......
......@@ -254,6 +254,7 @@ static try
add_init_expr_to_sym (const char *name, gfc_expr ** initp,
locus * var_locus)
{
int i;
symbol_attribute attr;
gfc_symbol *sym;
gfc_expr *init;
......@@ -287,7 +288,7 @@ add_init_expr_to_sym (const char *name, gfc_expr ** initp,
else
{
/* If a variable appears in a DATA block, it cannot have an
initializer. */
initializer. */
if (sym->attr.data)
{
gfc_error
......@@ -301,6 +302,19 @@ add_init_expr_to_sym (const char *name, gfc_expr ** initp,
&& gfc_check_assign_symbol (sym, init) == FAILURE)
return FAILURE;
for (i = 0; i < sym->attr.dimension; i++)
{
if (sym->as->lower[i] == NULL
|| sym->as->lower[i]->expr_type != EXPR_CONSTANT
|| sym->as->upper[i] == NULL
|| sym->as->upper[i]->expr_type != EXPR_CONSTANT)
{
gfc_error ("Array '%s' at %C cannot have initializer",
sym->name);
return FAILURE;
}
}
/* Add initializer. Make sure we keep the ranks sane. */
if (sym->attr.dimension && init->rank == 0)
init->rank = sym->as->rank;
......
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