http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54874
--- Comment #1 from Salvatore Filippone <sfilippone at uniroma2 dot it>
2012-10-09 10:02:41 UTC ---
Interestingly, taking out the outer container p% makes the code work...
-------------------------------------------------------------------
[sfilippo@jacobi bug34]$ gfortran -o poywork polywork.f90
[sfilippo@jacobi bug34]$ ./poywork
level 1
New inner descr
level 1
New inner descr
level 2
New inner descr
level 1
New inner descr
level 2
New inner descr
level 3
New inner descr
level 1
New inner descr
level 2
New inner descr
level 3
New inner descr
level 4
Base inner descr
------------------------------------------------------
program testsource
use testmod
type(level), allocatable :: vect(:)
class(outer), allocatable :: outvar1, outvar2
integer :: i,j,k,n,info
n = 4
allocate(outer :: outvar1)
allocate(outer :: outvar2)
allocate(new_inner :: outvar1%var)
allocate(inner :: outvar2%var)
allocate(vect(n))
do i=1, n
if (i<n) then
allocate(vect(i)%outvar,source=outvar1)
else
allocate(vect(i)%outvar,source=outvar2)
end if
write(0,*)
do k=1,i
write(0,*) 'level ',k
call vect(k)%outvar%var%descr()
end do
end do
end program testsourc