2012-01-27 Paul Thomas <pault@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / class_allocate_9.f03
blob2446ed61413ee44a495e11c79b03cfe9938217a5
1 ! { dg-do run }
2 ! PR51870 - ALLOCATE with class function expression for SOURCE failed.
3 ! This is the original test in the PR.
5 ! Reported by Tobias Burnus  <burnus@gcc.gnu.org>
7 module show_producer_class
8   implicit none
9   type integrand
10     integer :: variable = -1
11   end type integrand
13   type show_producer
14   contains
15     procedure ,nopass :: create_show
16   end type
17 contains
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
23 end module
25 program main
26   use show_producer_class
27   implicit none
28   class(integrand) ,allocatable :: kernel1, kernel2
29   type(show_producer) :: executive_producer
31   allocate(kernel1, kernel2,mold=executive_producer%create_show ())
32   if (kernel1%variable .ne. -1) call abort
33   if (kernel2%variable .ne. -1) call abort
34 end program
35 ! { dg-final { cleanup-modules "show_producer_class" } }