| ! { dg-do compile } |
| ! PR42008 Wrongly rejected derived types with default initializers |
| ! in PURE procedures |
| module mod_xyz |
| implicit none |
| contains |
| pure subroutine psub() |
| type ilist |
| type(ilist), pointer :: next => null() ! Valid |
| integer :: i |
| end type ilist |
| end subroutine psub |
| end module mod_xyz |
| |
| module mod_xyz2 |
| implicit none |
| contains |
| pure subroutine psub() |
| type ilist |
| type(ilist), pointer :: next |
| integer, pointer :: p => null() ! Valid |
| integer :: i |
| end type ilist |
| type(ilist) :: var ! Valid |
| var%next => null() |
| end subroutine psub |
| end module mod_xyz2 |
| |
| module mod_xyz3 |
| implicit none |
| type ilist |
| type(ilist), pointer :: next => null() ! Valid |
| integer :: i |
| end type ilist |
| contains |
| pure subroutine psub() |
| type(ilist) :: var ! Valid |
| end subroutine psub |
| end module mod_xyz3 |
| |
| pure function test() |
| integer,pointer :: p => null() !{ dg-error "not allowed in a PURE procedure" } |
| integer :: test |
| test = p |
| end function test |