fortran: [PR102595]
PR fortran/102595 gcc/fortran/ChangeLog: * data.cc (gfc_assign_data_value): Remove check for PARAMETER in DATA. * primary.cc (match_variable): Add check for PARAMETER in DATA. gcc/testsuite/ChangeLog: * gfortran.dg/pr88048.f90: Adjust for changed error message. * gfortran.dg/parameter_data0.f90: New test.
This commit is contained in:
parent
046dc9d0d4
commit
48f544ad5c
4 changed files with 15 additions and 10 deletions
|
@ -244,13 +244,6 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index,
|
|||
"array-element nor a scalar-structure-component";
|
||||
|
||||
symbol = lvalue->symtree->n.sym;
|
||||
if (symbol->attr.flavor == FL_PARAMETER)
|
||||
{
|
||||
gfc_error ("PARAMETER %qs shall not appear in a DATA statement at %L",
|
||||
symbol->name, &lvalue->where);
|
||||
return false;
|
||||
}
|
||||
|
||||
init = symbol->value;
|
||||
last_ts = &symbol->ts;
|
||||
last_con = NULL;
|
||||
|
|
|
@ -4076,8 +4076,14 @@ match_variable (gfc_expr **result, int equiv_flag, int host_flag)
|
|||
gfc_error ("Named constant at %C in an EQUIVALENCE");
|
||||
return MATCH_ERROR;
|
||||
}
|
||||
/* Otherwise this is checked for and an error given in the
|
||||
variable definition context checks. */
|
||||
if (gfc_in_match_data())
|
||||
{
|
||||
gfc_error ("PARAMETER %qs shall not appear in a DATA statement at %C",
|
||||
sym->name);
|
||||
return MATCH_ERROR;
|
||||
}
|
||||
/* Otherwise this is checked for an error given in the
|
||||
variable definition context checks. */
|
||||
break;
|
||||
|
||||
case FL_PROCEDURE:
|
||||
|
|
6
gcc/testsuite/gfortran.dg/parameter_data0.f90
Normal file
6
gcc/testsuite/gfortran.dg/parameter_data0.f90
Normal file
|
@ -0,0 +1,6 @@
|
|||
! { dg-do compile }
|
||||
! PR fortran/102595 Similar to 88048 with a zero sized array
|
||||
program p
|
||||
complex, parameter:: x(0) = 2
|
||||
data x%im /3.0/ ! { dg-error "shall not appear in a DATA statement" }
|
||||
end
|
|
@ -2,6 +2,6 @@
|
|||
! PR fortran/88048
|
||||
program p
|
||||
integer, parameter :: a(2) = 1
|
||||
data a(2) /a(1)/ ! { dg-error "definable entity" }
|
||||
data a(2) /a(1)/ ! { dg-error "shall not appear in a DATA statement" }
|
||||
print *, a
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue