mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user