xref: /llvm-project/flang/test/Semantics/symbol29.f90 (revision 456fdf851c19f79a895c59341d491ce819138522)
1*456fdf85SPeter Klausler! RUN: %python %S/test_symbols.py %s %flang_fc1
2*456fdf85SPeter Klausler! References to generic functions with forward-referenced specifics.
3*456fdf85SPeter Klausler!DEF: /m Module
4*456fdf85SPeter Klauslermodule m
5*456fdf85SPeter Klauslercontains
6*456fdf85SPeter Klausler !DEF: /m/specific4 PUBLIC (Function) Subprogram INTEGER(4)
7*456fdf85SPeter Klausler !DEF: /m/specific4/x INTENT(IN) ObjectEntity INTEGER(4)
8*456fdf85SPeter Klausler integer function specific4(x)
9*456fdf85SPeter Klausler  !REF: /m/specific4/x
10*456fdf85SPeter Klausler  integer, intent(in) :: x(*)
11*456fdf85SPeter Klausler end function
12*456fdf85SPeter Klausler !DEF: /m/test PUBLIC (Subroutine) Subprogram
13*456fdf85SPeter Klausler !DEF: /m/test/specific1 EXTERNAL (Function) Subprogram INTEGER(4)
14*456fdf85SPeter Klausler subroutine test (specific1)
15*456fdf85SPeter Klausler  !DEF: /m/test/generic (Function) Generic
16*456fdf85SPeter Klausler  interface generic
17*456fdf85SPeter Klausler   !REF: /m/test/specific1
18*456fdf85SPeter Klausler   procedure :: specific1
19*456fdf85SPeter Klausler   !DEF: /m/test/specific2 EXTERNAL, PURE (Function) Subprogram INTEGER(4)
20*456fdf85SPeter Klausler   procedure :: specific2
21*456fdf85SPeter Klausler   !DEF: /m/test/specific3 EXTERNAL (Function) Subprogram INTEGER(4)
22*456fdf85SPeter Klausler   procedure :: specific3
23*456fdf85SPeter Klausler   !DEF: /m/test/specific4 EXTERNAL (Function) Subprogram INTEGER(4)
24*456fdf85SPeter Klausler   procedure :: specific4
25*456fdf85SPeter Klausler  end interface
26*456fdf85SPeter Klausler  interface
27*456fdf85SPeter Klausler   !REF: /m/test/specific1
28*456fdf85SPeter Klausler   !DEF: /m/test/specific1/x INTENT(IN) ObjectEntity INTEGER(4)
29*456fdf85SPeter Klausler   integer function specific1(x)
30*456fdf85SPeter Klausler    !REF: /m/test/specific1/x
31*456fdf85SPeter Klausler    integer, intent(in) :: x
32*456fdf85SPeter Klausler   end function
33*456fdf85SPeter Klausler   !REF: /m/test/specific2
34*456fdf85SPeter Klausler   !DEF: /m/test/specific2/x INTENT(IN) ObjectEntity INTEGER(4)
35*456fdf85SPeter Klausler   !DEF: /m/test/specific2/y INTENT(IN) ObjectEntity INTEGER(4)
36*456fdf85SPeter Klausler   pure integer function specific2(x, y)
37*456fdf85SPeter Klausler    !REF: /m/test/specific2/x
38*456fdf85SPeter Klausler    !REF: /m/test/specific2/y
39*456fdf85SPeter Klausler    integer, intent(in) :: x, y
40*456fdf85SPeter Klausler   end function
41*456fdf85SPeter Klausler   !REF: /m/test/specific3
42*456fdf85SPeter Klausler   !DEF: /m/test/specific3/x INTENT(IN) ObjectEntity INTEGER(4)
43*456fdf85SPeter Klausler   !DEF: /m/test/specific3/y INTENT(IN) ObjectEntity INTEGER(4)
44*456fdf85SPeter Klausler   integer function specific3(x, y)
45*456fdf85SPeter Klausler    !REF: /m/test/generic
46*456fdf85SPeter Klausler    import :: generic
47*456fdf85SPeter Klausler    !REF: /m/test/specific3/x
48*456fdf85SPeter Klausler    !REF: /m/test/specific3/y
49*456fdf85SPeter Klausler    !REF: /m/test/specific2
50*456fdf85SPeter Klausler    integer, intent(in) :: x, y(generic(1, x))
51*456fdf85SPeter Klausler   end function
52*456fdf85SPeter Klausler   !REF: /m/test/specific4
53*456fdf85SPeter Klausler   !DEF: /m/test/specific4/x INTENT(IN) ObjectEntity INTEGER(4)
54*456fdf85SPeter Klausler   integer function specific4(x)
55*456fdf85SPeter Klausler    !REF: /m/test/specific4/x
56*456fdf85SPeter Klausler    integer, intent(in) :: x(:)
57*456fdf85SPeter Klausler   end function
58*456fdf85SPeter Klausler  end interface
59*456fdf85SPeter Klausler  !REF: /m/test/specific4
60*456fdf85SPeter Klausler  print *, generic([1])
61*456fdf85SPeter Klausler end subroutine
62*456fdf85SPeter Klauslerend module
63