https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110012
--- Comment #3 from Paul Thomas <pault at gcc dot gnu.org> --- Created attachment 63012 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=63012&action=edit Fix for this PR The attached, which needs some tidying up, regtests OK and allows the following to compile and run: module pde_class type, abstract :: pde(npde) integer,len :: npde end type end module module navier_stokes_type use pde_class type, extends(pde) :: navier_stokes integer, allocatable :: data_(:) end type contains subroutine alloc_navier_stokes(p , n) class(pde(:)), allocatable :: p allocate(navier_stokes(npde=3) :: p) select type (p) type is (navier_stokes(*)) allocate (p%data_, source = [1,2,3,4]) end select end subroutine end module module mfe_disc_type use pde_class type :: foo class(pde(:)), allocatable :: p end type end module program test call navier_stokes_test call mfe_disc_test contains subroutine navier_stokes_test use navier_stokes_type class (pde(:)), allocatable :: x call alloc_navier_stokes (x, 4) select type (x) type is (navier_stokes(*)) if (any (x%data_ /= [1,2,3,4])) stop 1 end select end subroutine subroutine mfe_disc_test use navier_stokes_type use mfe_disc_type type (foo), allocatable :: x end subroutine end program
