Dear Fortran Masters,
The code below is given an internal compiler error (C0000005). It seems valid Fortran 2003 to me. The idea of the code is to know the dimensions of the internal arrays of the "stream" data type when the function Solve is called by data types extending taUoO.
The error is obtained using the XE 2015 Composer Edition (latest update).
Thank you in advance, Javier
module mod_UoOAbstract implicit none public :: taUoO, stream private type, abstract :: taUoO integer :: isReady = .false. contains procedure(Solve), nopass, deferred :: Solve end type taUoO type :: stream(nc) integer, len :: nc real(8) :: T real(8) :: P real(8) :: nF(nc) real(8) :: zn(nc) real(8) :: beta real(8) :: h end type stream ! Define calling function prototypes. Concrete subroutines must ! be implemented for the extending types abstract interface ! Stream type is not visible inside the interface, hence it has to be imported subroutine Solve(nc, nFeeds, nProds, nExtns, nParms, feeds, prods, extns, parms) Import stream integer, intent(in) :: nc integer, intent(in) :: nFeeds integer, intent(in) :: nProds integer, intent(in) :: nExtns integer, intent(in) :: nParms type(stream(nc)), intent(inout) :: feeds(nFeeds) type(stream(nc)), intent(inout) :: prods(nProds) type(stream(nc)), intent(inout) :: extns(nExtns) real(8), intent(in) :: parms(nParms) end subroutine Solve end interface end module mod_UoOAbstract