1! RUN: %S/test_symbols.sh %s %t %flang_fc1
2! REQUIRES: shell
3!DEF: /main MainProgram
4program main
5 !DEF: /main/t1 DerivedType
6 type :: t1
7  !DEF: /main/t1/a1 ObjectEntity INTEGER(4)
8  integer :: a1
9 end type
10 !REF: /main/t1
11 !DEF: /main/t2 DerivedType
12 type, extends(t1) :: t2
13  !DEF: /main/t2/a2 ObjectEntity INTEGER(4)
14  integer :: a2
15 end type
16 !REF: /main/t2
17 !DEF: /main/t3 DerivedType
18 type, extends(t2) :: t3
19  !DEF: /main/t3/a3 ObjectEntity INTEGER(4)
20  integer :: a3
21 end type
22 !REF: /main/t3
23 !DEF: /main/x3 ObjectEntity TYPE(t3)
24 type(t3) :: x3
25 !DEF: /main/i ObjectEntity INTEGER(4)
26 integer i
27 !REF: /main/i
28 !REF: /main/x3
29 !REF: /main/t2/a2
30 i = x3%a2
31 !REF: /main/i
32 !REF: /main/x3
33 !REF: /main/t1/a1
34 i = x3%a1
35 !REF: /main/i
36 !REF: /main/x3
37 !DEF: /main/t3/t2 (ParentComp) ObjectEntity TYPE(t2)
38 !REF: /main/t2/a2
39 i = x3%t2%a2
40 !REF: /main/i
41 !REF: /main/x3
42 !REF: /main/t3/t2
43 !REF: /main/t1/a1
44 i = x3%t2%a1
45 !REF: /main/i
46 !REF: /main/x3
47 !DEF: /main/t2/t1 (ParentComp) ObjectEntity TYPE(t1)
48 !REF: /main/t1/a1
49 i = x3%t1%a1
50 !REF: /main/i
51 !REF: /main/x3
52 !REF: /main/t3/t2
53 !REF: /main/t2/t1
54 !REF: /main/t1/a1
55 i = x3%t2%t1%a1
56end program
57
58!DEF: /m1 Module
59module m1
60 !DEF: /m1/t1 PUBLIC DerivedType
61 type :: t1
62  !DEF: /m1/t1/t1 ObjectEntity INTEGER(4)
63  integer :: t1
64 end type
65end module
66
67!DEF: /s1 (Subroutine) Subprogram
68subroutine s1
69 !REF: /m1
70 !DEF: /s1/t2 Use
71 !REF: /m1/t1
72 use :: m1, only: t2 => t1
73 !REF: /s1/t2
74 !DEF: /s1/t3 DerivedType
75 type, extends(t2) :: t3
76 end type
77 !REF: /s1/t3
78 !DEF: /s1/x ObjectEntity TYPE(t3)
79 type(t3) :: x
80 !DEF: /s1/i ObjectEntity INTEGER(4)
81 integer i
82 !REF: /s1/i
83 !REF: /s1/x
84 !REF: /m1/t1/t1
85 i = x%t1
86 !REF: /s1/i
87 !REF: /s1/x
88 !DEF: /s1/t3/t2 (ParentComp) ObjectEntity TYPE(t2)
89 !REF: /m1/t1/t1
90 i = x%t2%t1
91end subroutine
92