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