blob: 2cec1cf0aeb232988ad6ba99befc99a4093d5d11 [file] [log] [blame]
! { dg-do run }
! Test for import in modules
! PR fortran/29601
subroutine bar(r)
implicit none
integer(8) :: r
if(r /= 42) STOP 1
r = 13
end subroutine bar
subroutine foo(a)
implicit none
type myT
sequence
character(len=3) :: c
end type myT
type(myT) :: a
if(a%c /= "xyz") STOP 2
a%c = "abc"
end subroutine
subroutine new(a,b)
implicit none
type gType
sequence
integer(8) :: c
end type gType
real(8) :: a
type(gType) :: b
if(a /= 99.0 .or. b%c /= 11) STOP 3
a = -123.0
b%c = -44
end subroutine new
module general
implicit none
integer,parameter :: ikind = 8
type gType
sequence
integer(ikind) :: c
end type gType
end module general
module modtest
use general
implicit none
type myT
sequence
character(len=3) :: c
end type myT
integer, parameter :: dp = 8
interface
subroutine bar(x)
import :: dp
integer(dp) :: x
end subroutine bar
subroutine foo(c)
import :: myT
type(myT) :: c
end subroutine foo
subroutine new(x,y)
import :: ikind,gType
real(ikind) :: x
type(gType) :: y
end subroutine new
end interface
contains
subroutine test
integer(dp) :: y
y = 42
call bar(y)
if(y /= 13) STOP 4
end subroutine test
subroutine test2()
type(myT) :: z
z%c = "xyz"
call foo(z)
if(z%c /= "abc") STOP 5
end subroutine test2
end module modtest
program all
use modtest
implicit none
call test()
call test2()
call test3()
contains
subroutine test3()
real(ikind) :: r
type(gType) :: t
r = 99.0
t%c = 11
call new(r,t)
if(r /= -123.0 .or. t%c /= -44) STOP 6
end subroutine test3
end program all