| ! { dg-do compile } |
| ! PR fortran/109846 |
| ! CLASS pointer function result in variable definition context |
| |
| module foo |
| implicit none |
| type :: parameter_list |
| contains |
| procedure :: sublist, sublist_nores |
| end type |
| contains |
| function sublist (this) result (slist) |
| class(parameter_list), intent(inout) :: this |
| class(parameter_list), pointer :: slist |
| allocate (slist) |
| end function |
| function sublist_nores (this) |
| class(parameter_list), intent(inout) :: this |
| class(parameter_list), pointer :: sublist_nores |
| allocate (sublist_nores) |
| end function |
| end module |
| |
| program example |
| use foo |
| implicit none |
| type(parameter_list) :: plist |
| call sub1 (plist%sublist()) |
| call sub1 (plist%sublist_nores()) |
| call sub2 (plist%sublist()) |
| call sub2 (plist%sublist_nores()) |
| contains |
| subroutine sub1 (plist) |
| type(parameter_list), intent(inout) :: plist |
| end subroutine |
| subroutine sub2 (plist) |
| type(parameter_list) :: plist |
| end subroutine |
| end program |