xref: /llvm-project/flang/test/Semantics/resolve115.f90 (revision 227f30a515d7aff0f462bed5fffb85b11ec0bb2a)
1*227f30a5SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1
2*227f30a5SPeter Klausler! Ensures that a generic's shadowed procedure or derived type
3*227f30a5SPeter Klausler! can be overridden by a valid interior interface definition
4*227f30a5SPeter Klausler! in some cases.
5*227f30a5SPeter Klausler
6*227f30a5SPeter Klauslermodule m1
7*227f30a5SPeter Klausler contains
8*227f30a5SPeter Klausler  subroutine foo
9*227f30a5SPeter Klausler  end subroutine
10*227f30a5SPeter Klausler  subroutine test
11*227f30a5SPeter Klausler    interface foo
12*227f30a5SPeter Klausler      subroutine foo(n)
13*227f30a5SPeter Klausler        integer, intent(in) :: n
14*227f30a5SPeter Klausler      end subroutine
15*227f30a5SPeter Klausler    end interface
16*227f30a5SPeter Klausler    call foo(1)
17*227f30a5SPeter Klausler  end subroutine
18*227f30a5SPeter Klauslerend module
19*227f30a5SPeter Klausler
20*227f30a5SPeter Klauslermodule m2
21*227f30a5SPeter Klausler contains
22*227f30a5SPeter Klausler  subroutine test
23*227f30a5SPeter Klausler    interface foo
24*227f30a5SPeter Klausler      subroutine foo(n)
25*227f30a5SPeter Klausler        integer, intent(in) :: n
26*227f30a5SPeter Klausler      end subroutine
27*227f30a5SPeter Klausler    end interface
28*227f30a5SPeter Klausler    call foo(1)
29*227f30a5SPeter Klausler  end subroutine
30*227f30a5SPeter Klausler  subroutine foo
31*227f30a5SPeter Klausler  end subroutine
32*227f30a5SPeter Klauslerend module
33*227f30a5SPeter Klausler
34*227f30a5SPeter Klauslermodule m3
35*227f30a5SPeter Klausler  interface
36*227f30a5SPeter Klausler    subroutine foo
37*227f30a5SPeter Klausler    end subroutine
38*227f30a5SPeter Klausler  end interface
39*227f30a5SPeter Klausler contains
40*227f30a5SPeter Klausler  subroutine test
41*227f30a5SPeter Klausler    interface foo
42*227f30a5SPeter Klausler      subroutine foo(n)
43*227f30a5SPeter Klausler        integer, intent(in) :: n
44*227f30a5SPeter Klausler      end subroutine
45*227f30a5SPeter Klausler    end interface
46*227f30a5SPeter Klausler    call foo(1)
47*227f30a5SPeter Klausler  end subroutine
48*227f30a5SPeter Klauslerend module
49*227f30a5SPeter Klausler
50*227f30a5SPeter Klauslermodule m4a
51*227f30a5SPeter Klausler contains
52*227f30a5SPeter Klausler  subroutine foo
53*227f30a5SPeter Klausler  end subroutine
54*227f30a5SPeter Klauslerend module
55*227f30a5SPeter Klauslermodule m4b
56*227f30a5SPeter Klausler  use m4a
57*227f30a5SPeter Klausler contains
58*227f30a5SPeter Klausler  subroutine test
59*227f30a5SPeter Klausler    interface foo
60*227f30a5SPeter Klausler      subroutine foo(n)
61*227f30a5SPeter Klausler        integer, intent(in) :: n
62*227f30a5SPeter Klausler      end subroutine
63*227f30a5SPeter Klausler    end interface
64*227f30a5SPeter Klausler    call foo(1)
65*227f30a5SPeter Klausler  end subroutine
66*227f30a5SPeter Klauslerend module
67*227f30a5SPeter Klausler
68*227f30a5SPeter Klauslermodule m5
69*227f30a5SPeter Klausler  type bar
70*227f30a5SPeter Klausler  end type
71*227f30a5SPeter Klausler contains
72*227f30a5SPeter Klausler  subroutine test
73*227f30a5SPeter Klausler    interface bar
74*227f30a5SPeter Klausler      real function bar()
75*227f30a5SPeter Klausler      end function
76*227f30a5SPeter Klausler    end interface
77*227f30a5SPeter Klausler    print *, bar()
78*227f30a5SPeter Klausler  end subroutine
79*227f30a5SPeter Klauslerend module
80