1! Like array_constructor_6.f90, but check constructors that apply
2! an elemental function to an array.
3! { dg-do run }
4program main
5  implicit none
6  call build (200)
7contains
8  subroutine build (order)
9    integer :: order, i
10
11    call test (order, (/ (abs ((/ i, -i, -i * 2 /)), i = 1, order) /))
12    call test (order, abs ((/ ((/ -i, -i, i * 2 /), i = 1, order) /)))
13    call test (order, (/ abs ((/ ((/ i, i, -i * 2 /), i = 1, order) /)) /))
14  end subroutine build
15
16  subroutine test (order, values)
17    integer, dimension (3:) :: values
18    integer :: order, i
19
20    if (size (values, dim = 1) .ne. order * 3) call abort
21    do i = 1, order
22      if (values (i * 3) .ne. i) call abort
23      if (values (i * 3 + 1) .ne. i) call abort
24      if (values (i * 3 + 2) .ne. i * 2) call abort
25    end do
26  end subroutine test
27end program main
28