| ! { dg-do compile } |
| ! |
| ! PR fortran/58469 |
| ! |
| ! Related: PR fortran/57697 |
| ! |
| ! Was ICEing before |
| ! |
| module m0 |
| implicit none |
| type :: component |
| integer :: i = 42 |
| contains |
| procedure :: assign0 |
| generic :: assignment(=) => assign0 |
| end type |
| type, extends(component) :: comp2 |
| real :: aa |
| end type comp2 |
| type parent |
| type(comp2) :: foo |
| end type |
| 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(parent), allocatable :: left |
| type(parent) :: right |
| print *, right%foo |
| left = right |
| print *, left%foo |
| if (left%foo%i /= 42) STOP 1 |
| end |