1! { dg-do run }
2! Test whether import works
3! PR fortran/29601
4
5subroutine test(x)
6  type myType3
7    sequence
8    integer :: i
9  end type myType3
10  type(myType3) :: x
11  if(x%i /= 7) STOP 1
12  x%i = 1
13end subroutine test
14
15
16subroutine bar(x,y)
17  type myType
18    sequence
19    integer :: i
20  end type myType
21  type(myType) :: x
22  integer(8) :: y
23  if(y /= 8) STOP 2
24  if(x%i /= 2) STOP 3
25  x%i = 5
26  y = 42
27end subroutine bar
28
29module testmod
30  implicit none
31  integer, parameter :: kind = 8
32  type modType
33    real :: rv
34  end type modType
35  interface
36    subroutine other(x,y)
37       import
38       real(kind)    :: x
39       type(modType) :: y
40    end subroutine
41  end interface
42end module testmod
43
44program foo
45  integer, parameter :: dp = 8
46  type myType
47    sequence
48    integer :: i
49  end type myType
50  type myType3
51    sequence
52    integer :: i
53  end type myType3
54  interface
55    subroutine bar(x,y)
56      import
57      type(myType) :: x
58      integer(dp)     :: y
59    end subroutine bar
60    subroutine test(x)
61      import :: myType3
62      import myType3 ! { dg-warning "already IMPORTed from" }
63      type(myType3) :: x
64    end subroutine test
65  end interface
66
67  type(myType) :: y
68  type(myType3) :: z
69  integer(8) :: i8
70  y%i = 2
71  i8 = 8
72  call bar(y,i8)
73  if(y%i /= 5 .or. i8/= 42) STOP 4
74  z%i = 7
75  call test(z)
76  if(z%i /= 1) STOP 5
77end program foo
78