79 lines
1.4 KiB
Fortran
79 lines
1.4 KiB
Fortran
! { 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) call abort()
|
|
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) call abort()
|
|
if(x%i /= 2) call abort()
|
|
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) call abort()
|
|
z%i = 7
|
|
call test(z)
|
|
if(z%i /= 1) call abort()
|
|
end program foo
|
|
! { dg-final { cleanup-modules "testmod" } }
|