xref: /llvm-project/flang/test/Semantics/symbol25.f90 (revision fd4c958dc5b3e052e5e717c3bf0f914a70466d84)
1! RUN: %python %S/test_symbols.py %s %flang_fc1
2! Exercise generic redefinitions in inner procedures with conflicting subprograms.
3!DEF: /m Module
4module m
5 !DEF: /m/generic PUBLIC (Subroutine) Generic
6 interface generic
7  !DEF: /m/specific1 PUBLIC (Subroutine) Subprogram
8  module procedure :: specific1
9 end interface
10contains
11 !REF: /m/specific1
12 subroutine specific1
13  print *, 1
14 end subroutine
15 !DEF: /m/specific2 PUBLIC (Subroutine) Subprogram
16 subroutine specific2
17  print *, 2
18 end subroutine
19 !DEF: /m/test PUBLIC (Subroutine) Subprogram
20 subroutine test
21  !REF: /m/specific1
22  call generic
23 end subroutine
24 !DEF: /m/outer PUBLIC (Subroutine) Subprogram
25 subroutine outer
26  !DEF: /m/outer/inner1 (Subroutine) Subprogram
27  call inner1
28 contains
29  !REF: /m/outer/inner1
30  subroutine inner1
31   !DEF: /m/outer/inner1/generic (Subroutine) Generic
32   interface generic
33    !REF: /m/specific2
34    module procedure :: specific2
35   end interface
36   !REF: /m/specific2
37   call generic
38  end subroutine inner1
39 end subroutine outer
40end module m
41!DEF: /main MainProgram
42program main
43 !REF: /m
44 use :: m
45 !REF: /m/specific1
46 call generic
47 !DEF: /main/inner2 (Subroutine) Subprogram
48 call inner2
49contains
50 !REF: /main/inner2
51 subroutine inner2
52  !DEF: /main/inner2/generic (Subroutine) Generic
53  interface generic
54   !DEF: /main/specific2 (Subroutine) Use
55   module procedure :: specific2
56  end interface
57  !REF: /main/specific2
58  call generic
59 end subroutine inner2
60end program
61