re PR fortran/32906 (Error: Parameter array ... cannot be automatic or assumed shape)

gcc/fortran:
2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32906
	* resolve.c (resolve_fl_parameter): Check for constant shape arrays,
	adjusted error message.

gcc/testsuite:
2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32906
	* gfortran.dg/shape_1.f90: Adjust error message.
	* gfortran.dg/parameter_array_ref_1.f90: New test.

From-SVN: r127043
This commit is contained in:
Daniel Franke 2007-07-29 10:17:59 -04:00 committed by Daniel Franke
parent b1e759547f
commit c317bc4076
5 changed files with 31 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2007-07-29 Daniel Franke <franke.daniel@gmail.com>
PR fortran/32906
* resolve.c (resolve_fl_parameter): Check for constant shape arrays,
adjusted error message.
2007-07-29 Daniel Franke <franke.daniel@gmail.com>
* invoke.texi: Removed -w from option summary.

View File

@ -7137,10 +7137,12 @@ static try
resolve_fl_parameter (gfc_symbol *sym)
{
/* A parameter array's shape needs to be constant. */
if (sym->as != NULL && !gfc_is_compile_time_shape (sym->as))
if (sym->as != NULL
&& (sym->as->type == AS_DEFERRED
|| is_non_constant_shape_array (sym)))
{
gfc_error ("Parameter array '%s' at %L cannot be automatic "
"or assumed shape", sym->name, &sym->declared_at);
"or of deferred shape", sym->name, &sym->declared_at);
return FAILURE;
}

View File

@ -1,3 +1,9 @@
2007-07-29 Daniel Franke <franke.daniel@gmail.com>
PR fortran/32906
* gfortran.dg/shape_1.f90: Adjust error message.
* gfortran.dg/parameter_array_ref_1.f90: New test.
2007-07-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/31609

View File

@ -0,0 +1,13 @@
! { dg-do compile }
!
! PR fortran/32906 - Parameter array ... cannot be automatic or assumed shape
!
! Testcase contributed by Florian Ladstaedter <flad AT gmx DOT at>
!
program test_program
integer, parameter :: len = 1
integer, parameter :: arr(max(len,1)) = (/1/)
character(len=*), dimension (1), parameter :: specStr = (/'string'/)
double precision, dimension (size(specStr)), parameter :: specNum = (/99.0d0/)
end

View File

@ -1,6 +1,6 @@
! { dg-do compile }
! PR 13201 we used to not give an error in those cases
subroutine foo(n)
integer, parameter :: a(n) = 1 ! { dg-error "cannot be automatic" "automatic shape" }
integer, parameter :: z(:) = (/ 1,2,3 /) ! { dg-error "cannot be automatic" "assumed shape" }
integer, parameter :: a(n) = 1 ! { dg-error "cannot be automatic" "automatic shape" }
integer, parameter :: z(:) = (/ 1,2,3 /) ! { dg-error "cannot be automatic" "deferred shape" }
end subroutine