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