(root)/
gcc-13.2.0/
gcc/
testsuite/
gfortran.dg/
ptr-func-5.f90
! { 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