2 ! Test the move_alloc intrinsic.
4 ! Contributed by Erik Edelmann <eedelmann@gcc.gnu.org>
5 ! and Paul Thomas <pault@gcc.gnu.org>
7 program test_move_alloc
10 integer, allocatable
:: x(:), y(:), temp(:)
11 character(4), allocatable
:: a(:), b(:)
19 call move_alloc (x
, y
)
20 if (allocated(x
)) call abort()
21 if (.not
.allocated(y
)) call abort()
22 if (any(y
/= [ 42, 77 ])) call abort()
24 a
= [ "abcd", "efgh" ]
25 call move_alloc (a
, b
)
26 if (allocated(a
)) call abort()
27 if (.not
.allocated(b
)) call abort()
28 if (any(b
/= [ "abcd", "efgh" ])) call abort()
30 ! Now one of the intended applications of move_alloc; resizing
32 call move_alloc (y
, temp
)
33 allocate (y(6), stat
=i
)
34 if (i
/= 0) call abort()
38 if (any(y
/= [ 42, 77, 99, 99, 99, 99 ])) call abort()
39 end program test_move_alloc