| ! { dg-do compile } |
| ! |
| ! PR fortran/58652 |
| ! |
| ! Contributed by Vladimir Fuka |
| ! |
| ! The passing of a CLASS(*) to a CLASS(*) was reject before |
| ! |
| module gen_lists |
| type list_node |
| class(*),allocatable :: item |
| contains |
| procedure :: move_alloc => list_move_alloc |
| end type |
| |
| contains |
| |
| subroutine list_move_alloc(self,item) |
| class(list_node),intent(inout) :: self |
| class(*),intent(inout),allocatable :: item |
| |
| call move_alloc(item, self%item) |
| end subroutine |
| end module |
| |
| module lists |
| use gen_lists, only: node => list_node |
| end module lists |
| |
| |
| module sexp |
| use lists |
| contains |
| subroutine parse(ast) |
| class(*), allocatable, intent(out) :: ast |
| class(*), allocatable :: expr |
| integer :: ierr |
| allocate(node::ast) |
| select type (ast) |
| type is (node) |
| call ast%move_alloc(expr) |
| end select |
| end subroutine |
| end module |