! { dg-do run } | |
module m | |
interface | |
module function f(a, n, b) result(z) | |
integer, intent(in) :: n | |
real :: z(n + 1) | |
real :: a, b | |
end | |
end interface | |
contains | |
module procedure f | |
integer :: i | |
do i = 1, size(z) | |
z(i) = real(i) | |
end do | |
end procedure | |
end | |
! Comment 1 | |
module n | |
interface | |
module subroutine g(n, z) | |
integer, intent(in) :: n | |
real :: z(n) | |
end | |
end interface | |
contains | |
module procedure g | |
z = 1 | |
if (int (sum (z)) /= n) stop 1 | |
end procedure | |
end | |
use m | |
use n | |
real, allocatable :: r(:) | |
integer :: i = 2 | |
r = f (1.0, i+1, 2.0) | |
if (any (r .ne. [(real(i), i = 1,4)])) stop 2 | |
if (any (f (3.0, 1, 4.0) .ne. [(real(i), i = 1,2)])) stop 3 | |
r = [(real (i), i = 10,20)] | |
call g (5, r) | |
if (int (sum (r)) /= (sum ([(i, i = 15,20)]) + 5)) stop 4 | |
end |