| ! { dg-do run } |
| Module m |
| Implicit None |
| Type, Public :: t1 |
| Integer, Allocatable :: i(:) |
| End Type |
| Type, Public :: t2 |
| Integer, Allocatable :: i(:) |
| End Type |
| Type, Public :: t3 |
| Type (t2) :: t |
| End Type |
| Type, Public :: t4 |
| End Type |
| Type, Public, Extends (t4) :: t5 |
| Type (t1) :: t_c1 |
| End Type |
| Type, Public, Extends (t4) :: t6 |
| Type (t5) :: t_c2 |
| End Type |
| Type, Public, Extends (t6) :: t7 |
| Type (t3) :: t_c3 |
| End Type |
| End Module |
| Program main |
| Use m |
| Implicit None |
| Interface |
| Subroutine s(t) |
| Use m |
| Class (t4), Allocatable, Intent (Out) :: t |
| End Subroutine |
| End Interface |
| Class (t4), Allocatable :: t |
| Call s(t) |
| Deallocate (t) |
| End Program |
| Subroutine s(t) |
| Use m |
| Class (t4), Allocatable, Intent (Out) :: t |
| Allocate (t7 :: t) |
| End Subroutine |