+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.
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;
}
+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
--- /dev/null
+! { 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
! { 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