! { dg-do run } ! ! PR fortran/42769 ! The static resolution of A%GET used to be incorrectly simplified to MOD2's ! MY_GET instead of the original MOD1's MY_GET, depending on the order in which ! MOD1 and MOD2 were use-associated. ! ! Original testcase by Salvator Filippone ! Reduced by Janus Weil module mod1 type :: t1 contains procedure, nopass :: get => my_get end type contains subroutine my_get(i) i = 2 end subroutine end module module mod2 contains subroutine my_get(i) ! must have the same name as the function in mod1 i = 5 end subroutine end module call test1() call test2() contains subroutine test1() use mod2 use mod1 type(t1) :: a call a%get(j) if (j /= 2) call abort end subroutine test1 subroutine test2() use mod1 use mod2 type(t1) :: a call a%get(j) if (j /= 2) call abort end subroutine test2 end