! { dg-do run } ! Tests the fix for PR68196 ! ! Contributed by Damian Rouson ! type AA integer :: i procedure(foo), pointer :: funct end type class(AA), allocatable :: my_AA type(AA) :: res allocate (my_AA, source = AA (1, foo)) res = my_AA%funct () if (res%i .ne. 3) STOP 1 if (.not.associated (res%funct)) STOP 2 if (my_AA%i .ne. 4) STOP 3 if (associated (my_AA%funct)) STOP 4 contains function foo(A) class(AA) :: A type(AA) foo select type (A) type is (AA) foo = AA (3, foo) A = AA (4, NULL ()) end select end function end