! { dg-do run } | |
! Test whether import works | |
! PR fortran/29601 | |
subroutine test(x) | |
type myType3 | |
sequence | |
integer :: i | |
end type myType3 | |
type(myType3) :: x | |
if(x%i /= 7) STOP 1 | |
x%i = 1 | |
end subroutine test | |
subroutine bar(x,y) | |
type myType | |
sequence | |
integer :: i | |
end type myType | |
type(myType) :: x | |
integer(8) :: y | |
if(y /= 8) STOP 2 | |
if(x%i /= 2) STOP 3 | |
x%i = 5 | |
y = 42 | |
end subroutine bar | |
module testmod | |
implicit none | |
integer, parameter :: kind = 8 | |
type modType | |
real :: rv | |
end type modType | |
interface | |
subroutine other(x,y) | |
import | |
real(kind) :: x | |
type(modType) :: y | |
end subroutine | |
end interface | |
end module testmod | |
program foo | |
integer, parameter :: dp = 8 | |
type myType | |
sequence | |
integer :: i | |
end type myType | |
type myType3 | |
sequence | |
integer :: i | |
end type myType3 | |
interface | |
subroutine bar(x,y) | |
import | |
type(myType) :: x | |
integer(dp) :: y | |
end subroutine bar | |
subroutine test(x) | |
import :: myType3 | |
import myType3 ! { dg-warning "already IMPORTed from" } | |
type(myType3) :: x | |
end subroutine test | |
end interface | |
type(myType) :: y | |
type(myType3) :: z | |
integer(8) :: i8 | |
y%i = 2 | |
i8 = 8 | |
call bar(y,i8) | |
if(y%i /= 5 .or. i8/= 42) STOP 4 | |
z%i = 7 | |
call test(z) | |
if(z%i /= 1) STOP 5 | |
end program foo |