! { dg-do compile } ! ! PR fortran/57508 ! module ForTrilinos_ref_counter type ref_counter contains procedure :: assign generic :: assignment(=) => assign end type contains subroutine assign (lhs, rhs) class (ref_counter), intent(inout) :: lhs class (ref_counter), intent(in) :: rhs end subroutine end module module FEpetra_BlockMap use ForTrilinos_ref_counter, only : ref_counter type :: Epetra_BlockMap type(ref_counter) :: counter end type contains function from_struct() result(new_Epetra_BlockMap) type(Epetra_BlockMap) :: new_Epetra_BlockMap end function type(Epetra_BlockMap) function create_arbitrary() create_arbitrary = from_struct() end function end module