! { dg-do run } ! ! PR fortran/57697 ! ! Further test of typebound defined assignment ! module m0 implicit none type :: component integer :: i = 42 integer, allocatable :: b contains procedure :: assign0 generic :: assignment(=) => assign0 end type type, extends(component) :: comp2 real :: aa end type comp2 type parent type(component) :: foo real :: cc end type type p2 type(parent) :: x end type p2 contains elemental subroutine assign0(lhs,rhs) class(component), intent(INout) :: lhs class(component), intent(in) :: rhs lhs%i = 20 end subroutine end module program main use m0 implicit none type(p2), allocatable :: left type(p2) :: right ! print *, right%x%foo%i left = right ! print *, left%x%foo%i if (left%x%foo%i /= 20) call abort() end