the following code example is erroneous, so that the compiler should quit with a corresponding message. Instead, it fails with an internal compiler error (nvfortran 23.3-0):
module test type t1 integer :: x end type t1 type t2 type(t1), allocatable :: y(:) end type t2 contains subroutine do_stuff() allocate (y(1)) !!!allocate (x(1)) -> Invalid type-spec found in ALLOCATE statement end subroutine do_stuff end module test
The error message is
NVFORTRAN-S-0000-Internal compiler error. check_member: cannot match member with derived type 629 (test.F90: 15)
Note that if the variable y is replaced by another one which does not appear in type t2, e.g. x, the compiler instead fails normally with
Invalid type-spec found in ALLOCATE statement.