1! { dg-do run }
2! PR51870 - ALLOCATE with class function expression for SOURCE failed.
3! This is the original test in the PR.
4!
5! Reported by Tobias Burnus  <burnus@gcc.gnu.org>
6!
7module show_producer_class
8  implicit none
9  type integrand
10    integer :: variable = -1
11  end type integrand
12
13  type show_producer
14  contains
15    procedure ,nopass :: create_show
16  end type
17contains
18  function create_show () result(new_integrand)
19    class(integrand) ,allocatable :: new_integrand
20    allocate(new_integrand)
21    new_integrand%variable = 99
22  end function
23end module
24
25program main
26  use show_producer_class
27  implicit none
28  class(integrand) ,allocatable :: kernel
29  type(show_producer) :: executive_producer
30
31  allocate(kernel,source=executive_producer%create_show ())
32  if (kernel%variable .ne. 99) call abort
33end program
34