1! { dg-do run } 2 3! Test that index vector on lhs of caf-expression works correctly. 4 5program pr81773 6 7 integer, parameter :: ndim = 5 8 integer :: i 9 integer :: vec(ndim) = -1 10 integer :: res(ndim)[*] = [ (i, i=1, ndim) ] 11 type T 12 integer :: padding 13 integer :: dest(ndim) 14 integer :: src(ndim) 15 end type 16 17 type(T) :: dest 18 type(T), allocatable :: caf[:] 19 20 vec([ndim, 3, 1]) = res(1:3)[1] 21 if (any (vec /= [ 3, -1, 2, -1, 1])) stop 1 22 23 dest = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] ) 24 dest%dest([ 4,3,2 ]) = res(3:5)[1] 25 if (any (dest%dest /= [-1, 5, 4, 3, -1])) stop 2 26 27 vec(:) = -1 28 allocate(caf[*], source = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] )) 29 vec([ 5,3,2 ]) = caf[1]%src(2:4) 30 if (any (vec /= [ -1, 0, 1, -1, 2])) stop 3 31end 32 33