! { dg-do compile } ! ! PR 42167: [OOP] SELECT TYPE with function return value ! ! Contributed by Damian Rouson module bar_module implicit none type :: bar real ,dimension(:) ,allocatable :: f contains procedure :: total end type contains function total(lhs,rhs) class(bar) ,intent(in) :: lhs class(bar) ,intent(in) :: rhs class(bar) ,pointer :: total select type(rhs) type is (bar) allocate(bar :: total) select type(total) type is (bar) total%f = lhs%f + rhs%f end select end select end function end module