2005-12-23 Paul Thomas <pault@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / initialization_1.f90
blob4e852697c92c6ba97b3826a6d6e5142f45ce864d
1 !==================initialization_1.f90======================
3 ! { dg-do compile }
4 ! Tests fix for PR25018 in which an ICE resulted from using a
5 ! variable in a parameter initialization expression. In the course
6 ! of developing the fix, various other constraints and limitations
7 ! were tested.
9 ! Contributed by Paul Thomas <pault@gcc.gnu.org>
11 module const
12 ! The next line is the original error
13 real(8), parameter :: g = - sqrt(2._8) * Gf ! { dg-error "not been declared or is a variable" }
14 contains
15 subroutine foo(ch1, x, y)
16 character(*) :: ch1
18 ! This is OK because it is a restricted expression.
19 character(len(ch1)) :: ch2
21 real(8) :: x (1:2, *)
22 real(8) :: y (0:,:)
23 integer :: i
25 ! However, this gives a warning because it is an initialization expression.
26 integer :: l1 = len (ch1) ! { dg-warning "assumed character length variable" }
28 ! Dependence on upper bound of final dimension of assumed size array knocks these out.
29 integer :: m1 = size (x, 2) ! { dg-error "not a valid dimension index" }
30 integer :: m2(2) = shape (x) ! { dg-error "assumed size array" }
32 ! These are warnings because they are gfortran extensions.
33 integer :: m3 = size (x, 1) ! { dg-warning "Evaluation of nonstandard initialization" }
34 integer :: m4(2) = shape (z) ! { dg-warning "Evaluation of nonstandard initialization" }
36 ! This does not depend on non-constant properties.
37 real(8) :: big = huge (x)
39 end subroutine foo
40 end module const