! { dg-do run } ! ! Test the fix for PR112834 in which class array function selectors caused ! problems for both ASSOCIATE and SELECT_TYPE. ! ! Contributed by Paul Thomas ! module m implicit none type t integer :: i = 0 end type t integer :: i = 0 type(t), parameter :: test_array (2) = [t(42),t(84)], & test_scalar = t(99) end module m module class_selectors use m implicit none private public foo2 contains function bar3() result(res) class(t), allocatable :: res(:) allocate (res, source = test_array) end subroutine foo2() associate (var1 => bar3()) if (any (var1%i .ne. test_array%i)) stop 1 if (var1(2)%i .ne. test_array(2)%i) stop 2 associate (zzz3 => var1%i) if (any (zzz3 .ne. test_array%i)) stop 3 if (zzz3(2) .ne. test_array(2)%i) stop 4 end associate select type (x => var1) type is (t) if (any (x%i .ne. test_array%i)) stop 5 if (x(2)%i .ne. test_array(2)%i) stop 6 class default stop 7 end select end associate select type (y => bar3 ()) type is (t) if (any (y%i .ne. test_array%i)) stop 8 if (y(2)%i .ne. test_array(2)%i) stop 9 class default stop 10 end select end subroutine foo2 end module class_selectors use class_selectors call foo2 end