2 ! Tests the patch that implements F2003 automatic allocation and
3 ! reallocation of allocatable arrays on assignment.
5 ! Contributed by Paul Thomas <pault@gcc.gnu.org>
7 integer(4), allocatable :: a(:), b(:), c(:,:)
9 integer(4) :: src(2:5) = [11,12,13,14]
10 integer(4) :: mat(2:3,5:6)
11 character(4), allocatable :: chr1(:)
12 character(4) :: chr2(2) = ["abcd", "wxyz"]
15 mat = reshape (src, [2,2])
18 if (size(a, 1) .ne. 4) call abort
19 if (any (a .ne. [4,3,2,1])) call abort
21 a = [((42 - i), i = 1, 10)]
22 if (size(a, 1) .ne. 10) call abort
23 if (any (a .ne. [((42 - i), i = 1, 10)])) call abort
26 if (size(b, 1) .ne. 10) call abort
27 if (any (b .ne. a)) call abort
30 if (size(a, 1) .ne. 4) call abort
31 if (any (a .ne. [4,3,2,1])) call abort
34 if (size(a, 1) .ne. 10) call abort
35 if (any (a .ne. [((42 - i), i = 1, 10)])) call abort
39 if (size(a, 1) .ne. j) call abort
40 if (any (a .ne. [(i, i = 1, j)])) call abort
43 if (size(a, 1) .ne. 15) call abort
44 if (any (a .ne. [((i + 15), i = 1, 15)])) call abort
47 if (lbound(a, 1) .ne. lbound(src, 1)) call abort
48 if (ubound(a, 1) .ne. ubound(src, 1)) call abort
49 if (any (a .ne. [11,12,13,14])) call abort
53 if (lbound(a, 1) .ne. lbound (b(k:8), 1)) call abort
54 if (ubound(a, 1) .ne. ubound (b(k:8), 1)) call abort
55 if (any (a .ne. [35,34])) call abort
58 if (any (lbound (c) .ne. lbound (mat))) call abort
59 if (any (ubound (c) .ne. ubound (mat))) call abort
60 if (any (c .ne. mat)) call abort
64 if (any (lbound (c) .ne. lbound (mat(2:,:)))) call abort
67 if (lbound(chr1, 1) .ne. 1) call abort
68 if (any (chr1 .ne. chr2(2:1:-1))) call abort
71 if (lbound(b, 1) .ne. lbound (c(1, :) + c(2, :), 1)) call abort
72 if (any (b .ne. c(1, :) + c(2, :))) call abort
74 function foo (n) result(res)
75 integer(4), allocatable, dimension(:) :: res
78 res = [((i + 15), i = 1, n)]