| ! { dg-do run } |
| ! PR 17244 |
| ! verifies that functions returning derived type work |
| module m |
| type t |
| integer i |
| real x |
| character*5 c |
| integer arr(5,5) |
| end type t |
| end module m |
| |
| use m |
| type(t) :: r |
| integer arr(5,5), vect(25), vect2(25) |
| do i=1,25 |
| vect = 0 |
| vect(i) = i |
| arr = reshape (vect, shape(arr)) |
| r = f(i,real(i),"HALLO",arr) |
| |
| if (r%i .ne. i) call abort() |
| if (r%x .ne. real(i)) call abort() |
| if (r%c .ne. "HALLO") call abort() |
| vect2 = reshape (r%arr, shape(vect2)) |
| if (any(vect2.ne.vect)) call abort() |
| end do |
| contains |
| |
| function f(i,x,c,arr) |
| type(t) :: f |
| character*5 c |
| integer arr(5,5) |
| |
| f = t(i,x,c,arr) |
| end function f |
| |
| end |