| ! { dg-do run } |
| ! |
| ! PR fortran/57530 |
| ! |
| ! |
| ! TYPE => TYPE pointer assignment for functions |
| ! |
| module m |
| implicit none |
| type t |
| integer :: ii = 55 |
| end type t |
| contains |
| function f1() |
| type(t), pointer :: f1 |
| allocate (f1) |
| f1%ii = 123 |
| end function f1 |
| function f2() |
| type(t), pointer :: f2(:) |
| allocate (f2(3)) |
| f2(:)%ii = [-11,-22,-33] |
| end function f2 |
| end module m |
| |
| program test |
| use m |
| implicit none |
| type(t), pointer :: p1, p2(:), p3(:,:) |
| p1 => f1() |
| if (p1%ii /= 123) STOP 1 |
| p2 => f2() |
| if (any (p2%ii /= [-11,-22,-33])) STOP 2 |
| p3(2:2,1:3) => f2() |
| if (any (p3(2,:)%ii /= [-11,-22,-33])) STOP 3 |
| end program test |