brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · f5f7222 Raw
141 lines · plain
1! RUN: %python %S/test_symbols.py %s %flang_fc12! Forward references to derived types (non-error cases)3 4!DEF: /MAIN MainProgram5program MAIN6 !DEF: /MAIN/t1 DerivedType7 type :: t18  !DEF: /MAIN/t2 DerivedType9  !DEF: /MAIN/t1/t1a ALLOCATABLE ObjectEntity TYPE(t2)10  type(t2), allocatable :: t1a11  !REF: /MAIN/t212  !DEF: /MAIN/t1/t1p POINTER ObjectEntity TYPE(t2)13  type(t2), pointer :: t1p14 end type15 !REF: /MAIN/t216 type :: t217  !REF: /MAIN/t218  !DEF: /MAIN/t2/t2a ALLOCATABLE ObjectEntity TYPE(t2)19  type(t2), allocatable :: t2a20  !REF: /MAIN/t221  !DEF: /MAIN/t2/t2p POINTER ObjectEntity TYPE(t2)22  type(t2), pointer :: t2p23 end type24 !REF: /MAIN/t125 !DEF: /MAIN/t1x TARGET ObjectEntity TYPE(t1)26 type(t1), target :: t1x27 !REF: /MAIN/t1x28 !REF: /MAIN/t1/t1a29 allocate(t1x%t1a)30 !REF: /MAIN/t1x31 !REF: /MAIN/t1/t1p32 !REF: /MAIN/t1/t1a33 t1x%t1p => t1x%t1a34 !REF: /MAIN/t1x35 !REF: /MAIN/t1/t1a36 !REF: /MAIN/t2/t2a37 allocate(t1x%t1a%t2a)38 !REF: /MAIN/t1x39 !REF: /MAIN/t1/t1a40 !REF: /MAIN/t2/t2p41 !REF: /MAIN/t2/t2a42 t1x%t1a%t2p => t1x%t1a%t2a43end program44!DEF: /f1/fwd DerivedType45!DEF: /f1 (Function) Subprogram TYPE(fwd)46!DEF: /f1/n (Implicit) ObjectEntity INTEGER(4)47type(fwd) function f1(n)48 !REF: /f1/fwd49 type :: fwd50  !DEF: /f1/fwd/n ObjectEntity INTEGER(4)51  integer :: n52 end type53 !DEF: /f1/f1 ObjectEntity TYPE(fwd)54 !REF: /f1/fwd/n55 !REF: /f1/n56 f1%n = n57end function58!DEF: /s1 (Subroutine) Subprogram59!DEF: /s1/q1 (Implicit) ObjectEntity TYPE(fwd)60subroutine s1 (q1)61 !DEF: /s1/fwd DerivedType62 implicit type(fwd)(q)63 !REF: /s1/fwd64 type :: fwd65  !DEF: /s1/fwd/n ObjectEntity INTEGER(4)66  integer :: n67 end type68 !REF: /s1/q169 !REF: /s1/fwd/n70 q1%n = 171end subroutine72!DEF: /f2/fwdpdt DerivedType73!DEF: /f2/kind INTRINSIC, PURE (Function) ProcEntity74!DEF: /f2 (Function) Subprogram TYPE(fwdpdt(k=4_4))75!DEF: /f2/n (Implicit) ObjectEntity INTEGER(4)76type(fwdpdt(kind(0))) function f2(n)77 !REF: /f2/fwdpdt78 !DEF: /f2/fwdpdt/k TypeParam INTEGER(4)79 type :: fwdpdt(k)80  !REF: /f2/fwdpdt/k81  integer, kind :: k82  !DEF: /f2/DerivedType2/k TypeParam INTEGER(4)83  !DEF: /f2/fwdpdt/n ObjectEntity INTEGER(int(int(k,kind=4),kind=8))84  integer(kind=k) :: n85 end type86 !DEF: /f2/f2 ObjectEntity TYPE(fwdpdt(k=4_4))87 !DEF: /f2/DerivedType2/n ObjectEntity INTEGER(4)88 !REF: /f2/n89 f2%n = n90end function91!DEF: /s2 (Subroutine) Subprogram92!DEF: /s2/q1 (Implicit) ObjectEntity TYPE(fwdpdt(k=4_4))93subroutine s2 (q1)94 !DEF: /s2/fwdpdt DerivedType95 !DEF: /s2/kind INTRINSIC, PURE (Function) ProcEntity96 implicit type(fwdpdt(kind(0)))(q)97 !REF: /s2/fwdpdt98 !DEF: /s2/fwdpdt/k TypeParam INTEGER(4)99 type :: fwdpdt(k)100  !REF: /s2/fwdpdt/k101  integer, kind :: k102  !DEF: /s2/DerivedType2/k TypeParam INTEGER(4)103  !DEF: /s2/fwdpdt/n ObjectEntity INTEGER(int(int(k,kind=4),kind=8))104  integer(kind=k) :: n105 end type106 !REF: /s2/q1107 !DEF: /s2/DerivedType2/n ObjectEntity INTEGER(4)108 q1%n = 1109end subroutine110!DEF: /m1 Module111module m1112 !DEF: /m1/forward PRIVATE DerivedType113 private :: forward114 !DEF: /m1/base PUBLIC DerivedType115 type :: base116  !REF: /m1/forward117  !DEF: /m1/base/p POINTER ObjectEntity CLASS(forward)118  class(forward), pointer :: p119 end type120 !REF: /m1/base121 !REF: /m1/forward122 type, extends(base) :: forward123  !DEF: /m1/forward/n ObjectEntity INTEGER(4)124  integer :: n125 end type126contains127 !DEF: /m1/test PUBLIC (Subroutine) Subprogram128 subroutine test129  !REF: /m1/forward130  !DEF: /m1/test/object TARGET ObjectEntity TYPE(forward)131  type(forward), target :: object132  !REF: /m1/test/object133  !REF: /m1/base/p134  object%p => object135  !REF: /m1/test/object136  !REF: /m1/base/p137  !REF: /m1/forward/n138  object%p%n = 666139 end subroutine140end module141