1! { dg-do run }
2!
3! Test the fix for PR80554 in which it was not recognised that the symbol 'i'
4! is host associated in the submodule 's' so that the new declaration in the
5! submodule was rejected.
6!
7! Contributed by Tamas Bela Feher  <tamas.bela.feher@ipp.mpg.de>
8!
9module M
10  implicit none
11  integer :: i = 0
12  character (100) :: buffer
13  interface
14    module subroutine write_i()
15    end subroutine
16  end interface
17  interface
18    module subroutine write_i_2()
19    end subroutine
20  end interface
21contains
22  subroutine foo
23    integer :: i
24  end
25end module
26
27submodule (M) S
28    integer :: i = 137
29  contains
30    module subroutine write_i()
31       write (buffer,*) i
32    end subroutine
33end submodule
34
35submodule (M:S) S2
36    integer :: i = 1037
37  contains
38    module subroutine write_i_2()
39       write (buffer,*) i
40    end subroutine
41end submodule
42
43program test_submod_variable
44  use M
45  implicit none
46  integer :: j
47  i = 42
48  call write_i
49  read (buffer, *) j
50  if (i .ne. 42) STOP 1
51  if (j .ne. 137) STOP 2
52  call write_i_2
53  read (buffer, *) j
54  if (i .ne. 42) STOP 3
55  if (j .ne. 1037) STOP 4
56end program
57