! { 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