aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90')
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.fortran-torture/execute/der_point.f9045
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90 b/gcc-4.9/gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90
new file mode 100644
index 000000000..1dcb07c21
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.fortran-torture/execute/der_point.f90
@@ -0,0 +1,45 @@
+! Program to test DERIVED type with components point to the DERIVED
+! type itself, and two DERIVED type with componets point to each
+! other.
+program nest_derived
+ type record
+ integer :: value
+ type(record), pointer :: rp
+ end type record
+
+ type record1
+ integer value
+ type(record2), pointer :: r1p
+ end type
+
+ type record2
+ integer value
+ type(record1), pointer :: r2p
+ end type
+
+ type(record), target :: e1, e2, e3
+ type(record1), target :: r1
+ type(record2), target :: r2
+ nullify(r1%r1p,r2%r2p,e1%rp,e2%rp,e3%rp)
+
+ r1%r1p => r2
+ r2%r2p => r1
+ e1%rp => e2
+ e2%rp => e3
+
+ r1%value = 11
+ r2%value = 22
+
+ e1%value = 33
+ e1%rp%value = 44
+ e1%rp%rp%value = 55
+
+ if (r1%r1p%value .ne. 22) call abort
+ if (r2%r2p%value .ne. 11) call abort
+ if (e1%value .ne. 33) call abort
+ if (e2%value .ne. 44) call abort
+ if (e3%value .ne. 55) call abort
+ if (r1%value .ne. 11) call abort
+ if (r2%value .ne. 22) call abort
+
+end