As the kinds of the integer types of type parameters may well depend on the values of other type parameters, defer the attempt to convert their values to the point of type instantiation instead of doing it during declaration processing.
67 lines
1.3 KiB
Fortran
67 lines
1.3 KiB
Fortran
! RUN: %python %S/test_modfile.py %s %flang_fc1
|
|
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_8
|
|
! 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
|