| ! { dg-do run } |
| ! |
| ! Check that the bounds of polymorphic coarrays is |
| ! properly handled. |
| ! |
| type t |
| end type t |
| class(t), allocatable :: a(:)[:] |
| class(t), allocatable :: b[:], d[:] |
| |
| allocate(a(1)[*]) |
| if (this_image() == 1 .and. any (this_image(a) /= lcobound(a))) & |
| call abort () |
| if (any (lcobound(a) /= 1)) call abort() |
| if (any (ucobound(a) /= this_image())) call abort () |
| deallocate(a) |
| |
| allocate(b[*]) |
| if (this_image() == 1 .and. any (this_image(b) /= lcobound(b))) & |
| call abort () |
| if (any (lcobound(b) /= 1)) call abort() |
| if (any (ucobound(b) /= this_image())) call abort () |
| deallocate(b) |
| |
| allocate(a(1)[-10:*]) |
| if (this_image() == 1 .and. any (this_image(a) /= lcobound(a))) & |
| call abort () |
| if (any (lcobound(a) /= -10)) call abort() |
| if (any (ucobound(a) /= -11+this_image())) call abort () |
| deallocate(a) |
| |
| allocate(d[23:*]) |
| if (this_image() == 1 .and. any (this_image(d) /= lcobound(d))) & |
| call abort () |
| if (any (lcobound(d) /= 23)) call abort() |
| if (any (ucobound(d) /= 22+this_image())) call abort () |
| deallocate(d) |
| |
| end |