summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/der_array_1.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/der_array_1.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/der_array_1.f9033
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/der_array_1.f90 b/gcc/testsuite/gfortran.dg/der_array_1.f90
new file mode 100644
index 000000000..00dc7a5c2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/der_array_1.f90
@@ -0,0 +1,33 @@
+! { dg-do run }
+! Test derived type constructors for derived types containing arrays.
+! PR16919
+program der_array_1
+ implicit none
+ integer n
+ integer m
+ ! The 4 components here test known shape array, unknown shape array,
+ ! multi-dimensional arrays and array pointers
+ type t
+ integer :: a(2)
+ integer :: b(2)
+ integer, dimension(2, 3) :: c
+ integer, pointer, dimension(:) :: p
+ end type
+ type(t) :: v
+ integer, dimension(2, 3) :: d
+ integer, dimension(:), pointer :: e
+ integer, dimension(2) :: f
+
+ m = 2
+ f = (/3, 4/)
+ d = reshape ((/5, 6, 7, 8, 9, 10/), (/2, 3/));
+ allocate (e(2))
+
+ v = t((/1, 2/), reshape (f, (/m/)), d, e);
+ if (any (v%a .ne. (/1, 2/)) .or. any (v%b .ne. (/3, 4/)) &
+ .or. any (v%c .ne. d) .or. .not. associated (v%p, e)) &
+ call abort ()
+
+ deallocate(e)
+end program
+