! RUN: %S/test_modfile.sh %s %t %f18
module m
  integer(8), parameter :: a = 1, b = 2_8
  parameter(n=3,l=-3,e=1.0/3.0)
  real :: x(a:2*(a+b*n)-1)
  real, dimension(8) :: y
  type t(c, d)
    integer, kind :: c = 1
    integer, len :: d = a + b
  end type
  type(t(a+3,:)), allocatable :: z
  class(t(a+4,:)), allocatable :: z2
  class(*), allocatable :: z4
  real*2 :: f
  complex*32 :: g
  type t2(i, j, h)
    integer, len :: h
    integer, kind :: j
    integer, len :: i
  end type
contains
  subroutine foo(x)
    real :: x(2:)
  end
  subroutine bar(x)
    real :: x(..)
  end
  subroutine baz(x)
    type(*) :: x
  end
end

!Expect: m.mod
!module m
!  integer(8),parameter::a=1_8
!  integer(8),parameter::b=2_8
!  integer(4),parameter::n=3_4
!  integer(4),parameter::l=-3_4
!  real(4),parameter::e=3.333333432674407958984375e-1_4
!  real(4)::x(1_8:13_8)
!  real(4)::y(1_8:8_8)
!  type::t(c,d)
!    integer(4),kind::c=1_4
!    integer(4),len::d=3_4
!  end type
!  type(t(c=4_4,d=:)),allocatable::z
!  class(t(c=5_4,d=:)),allocatable::z2
!  class(*),allocatable::z4
!  real(2)::f
!  complex(16)::g
!  type::t2(i,j,h)
!    integer(4),len::h
!    integer(4),kind::j
!    integer(4),len::i
!  end type
!contains
!  subroutine foo(x)
!    real(4)::x(2_8:)
!  end
!  subroutine bar(x)
!    real(4)::x(..)
!  end
!  subroutine baz(x)
!    type(*)::x
!  end
!end
