111
|
1 ! { dg-do run }
|
|
2 !
|
|
3 ! PR fortran/44360
|
|
4 !
|
|
5 ! Test-case based on a contribution of Vittorio Zecca.
|
|
6 !
|
|
7 ! The used subroutine was not the use-associated but the host associated one!
|
|
8 ! The use-associated function/variable were already working properly.
|
|
9 !
|
|
10 module m
|
|
11 integer :: var = 43
|
|
12 contains
|
|
13 integer function fun()
|
|
14 fun = 42
|
|
15 end function fun
|
|
16 subroutine fun2()
|
|
17 var = 44
|
|
18 end subroutine fun2
|
|
19 end module m
|
|
20
|
|
21 module m2
|
|
22 integer :: var = -2
|
|
23 contains
|
|
24 subroutine test()
|
|
25 ! All procedures/variables below refer to the ones in module "m"
|
|
26 ! and not to the siblings in this module "m2".
|
|
27 use m
|
131
|
28 if (fun() /= 42) STOP 1
|
|
29 if (var /= 43) STOP 2
|
111
|
30 call fun2()
|
131
|
31 if (var /= 44) STOP 3
|
111
|
32 end subroutine test
|
|
33 integer function fun()
|
131
|
34 STOP 4
|
111
|
35 fun = -3
|
|
36 end function fun
|
|
37 subroutine fun2()
|
131
|
38 STOP 5
|
111
|
39 end subroutine fun2
|
|
40 end module m2
|
|
41
|
|
42 use m2
|
|
43 call test()
|
|
44 end
|