! { dg-do compile } ! ! PR fortran/57364 ! ! Contributed by Damian Rouson ! module ref_counter_implementation 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 foo_parent_implementation use ref_counter_implementation ,only: ref_counter type :: foo_parent type(ref_counter) :: counter end type contains type(foo_parent) function new_foo_parent() end function end module module foo_implementation use foo_parent_implementation ,only: foo_parent,new_foo_parent type, extends(foo_parent) :: foo end type contains type(foo) function new_foo() new_foo%foo_parent = new_foo_parent() end function end module