! { dg-do compile } ! { dg-options "-std=f2018" } ! PR fortran/97036 - [F2018] Allow ELEMENTAL RECURSIVE procedure prefix module m97036 implicit none contains impure elemental recursive subroutine foo (n) integer, intent(in) :: n integer :: k(n), f(n), i k = [ (i-1, i=1,n) ] f = fac (k) print *, f end subroutine foo elemental recursive subroutine bla () end subroutine bla elemental recursive function fac (k) result (f) integer, intent(in) :: k integer :: f f = 1 if (k > 1) f = k*fac (k-1) end function fac end module use m97036 implicit none call foo ([4,5]) end