| ! { dg-do run } |
| ! Test assignments of nested derived types with character allocatable |
| ! components(PR 20541). Subroutine test_ab6 checks out a bug in a test |
| ! version of gfortran's allocatable arrays. |
| ! |
| ! Contributed by Erik Edelmann <eedelmann@gcc.gnu.org> |
| ! and Paul Thomas <pault@gcc.gnu.org> |
| ! |
| type :: a |
| character(4), allocatable :: ch(:) |
| end type a |
| |
| type :: b |
| type (a), allocatable :: at(:) |
| end type b |
| |
| type(a) :: x(2) |
| type(b) :: y(2), z(2) |
| |
| character(4) :: chr1(4) = (/"abcd","efgh","ijkl","mnop"/) |
| character(4) :: chr2(4) = (/"qrst","uvwx","yz12","3456"/) |
| |
| x(1) = a(chr1) |
| |
| ! Check constructor with character array constructors. |
| x(2) = a((/"qrst","uvwx","yz12","3456"/)) |
| |
| y(1) = b((/x(1),x(2)/)) |
| y(2) = b((/x(2),x(1)/)) |
| |
| y(2) = y(1) |
| |
| if (any((/((y(2)%at(i)%ch(j),j=1,4),i=1,2)/) .ne. & |
| (/chr1, chr2/))) call abort () |
| |
| call test_ab6 () |
| |
| contains |
| |
| subroutine test_ab6 () |
| ! This subroutine tests the presence of a scalar derived type, intermediate |
| ! in a chain of derived types with allocatable components. |
| ! Contributed by Salvatore Filippone <salvatore.filippone@uniroma2.it> |
| |
| type b |
| type(a) :: a |
| end type b |
| |
| type c |
| type(b), allocatable :: b(:) |
| end type c |
| |
| type(c) :: p |
| type(b) :: bv |
| |
| p = c((/b(a((/"Mary","Lamb"/)))/)) |
| bv = p%b(1) |
| |
| if (any ((bv%a%ch(:)) .ne. (/"Mary","Lamb"/))) call abort () |
| |
| end subroutine test_ab6 |
| |
| end |