Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gfortran.dg/class_allocate_8.f03 @ 120:f93fa5091070
fix conv1.c
author | mir3636 |
---|---|
date | Thu, 08 Mar 2018 14:53:42 +0900 |
parents | 04ced10e8804 |
children | 84e7813d76e9 |
line wrap: on
line source
! { dg-do run } ! PR51870 - ALLOCATE with class function expression for SOURCE failed. ! This version of the test allocates class arrays. ! ! Reported by Tobias Burnus <burnus@gcc.gnu.org> ! module show_producer_class implicit none type integrand integer :: variable = 0 end type integrand type show_producer contains procedure ,nopass :: create_show procedure ,nopass :: create_show_array end type contains function create_show () result(new_integrand) class(integrand) ,allocatable :: new_integrand allocate(new_integrand) new_integrand%variable = -1 end function function create_show_array (n) result(new_integrand) class(integrand) ,allocatable :: new_integrand(:) integer :: n, i allocate(new_integrand(n)) select type (new_integrand) type is (integrand); new_integrand%variable = [(i, i= 1, n)] end select end function end module program main use show_producer_class implicit none class(integrand) ,allocatable :: kernel(:) type(show_producer) :: executive_producer allocate(kernel(5),source=executive_producer%create_show_array (5)) select type(kernel) type is (integrand); if (any (kernel%variable .ne. [1,2,3,4,5])) call abort end select deallocate (kernel) allocate(kernel(3),source=executive_producer%create_show ()) select type(kernel) type is (integrand); if (any (kernel%variable .ne. -1)) call abort end select end program