! { dg-do compile }
!
! PR fortran/93427
!
! Contributed by Andrew Benson
!
module a
type :: t
end type t
contains
recursive function b()
class(t), pointer :: b
type(t) :: c
allocate(t :: b)
select type (b)
type is (t)
b=c
end select
end function b
end module a