2 ! { dg-additional-options "-Wconversion-extra" }
4 ! Test fix for PR fortran/96724
6 ! Contributed by José Rui Faustino de Sousa
9 use, intrinsic :: iso_fortran_env
, only
: int8
, int16
, int32
, int64
12 integer, parameter :: n
= 20
13 integer, parameter :: ucs4
= selected_char_kind ('ISO_10646')
15 integer(kind
=int8
), parameter :: p08
= int(n
, kind
=int8
)
16 integer(kind
=int16
), parameter :: p16
= int(n
, kind
=int16
)
17 integer(kind
=int16
), parameter :: p32
= int(n
, kind
=int32
)
18 integer(kind
=int16
), parameter :: p64
= int(n
, kind
=int64
)
20 integer(kind
=int8
) :: i08
21 integer(kind
=int16
) :: i16
22 integer(kind
=int32
) :: i32
23 integer(kind
=int64
) :: i64
25 character(len
=n
,kind
=1) :: c
26 character(len
=n
,kind
=ucs4
) :: d
29 c
= repeat('X', 20_int8
)
32 c
= repeat('X', len08(c
))
33 d
= repeat(ucs4_
'X', 20_int8
)
34 d
= repeat(ucs4_
'X', i08
)
35 d
= repeat(ucs4_
'X', p08
)
36 d
= repeat(ucs4_
'X', len08(c
))
38 c
= repeat('X', 20_int16
)
41 c
= repeat('X', len16(c
))
42 d
= repeat(ucs4_
'X', 20_int16
)
43 d
= repeat(ucs4_
'X', i16
)
44 d
= repeat(ucs4_
'X', p16
)
45 d
= repeat(ucs4_
'X', len16(c
))
47 c
= repeat('X', 20_int32
)
50 c
= repeat('X', len32(c
))
51 d
= repeat(ucs4_
'X', 20_int32
)
52 d
= repeat(ucs4_
'X', i32
)
53 d
= repeat(ucs4_
'X', p32
)
54 d
= repeat(ucs4_
'X', len32(c
))
56 c
= repeat('X', 20_int64
)
59 c
= repeat('X', len64(c
))
60 d
= repeat(ucs4_
'X', 20_int64
)
61 d
= repeat(ucs4_
'X', i64
)
62 d
= repeat(ucs4_
'X', p64
)
63 d
= repeat(ucs4_
'X', len64(c
))
67 function len08(x
) result(l
)
68 character(len
=*), intent(in
) :: x
69 integer(kind
=int8
) :: l
71 l
= int(len(x
), kind
=int8
)
74 function len16(x
) result(l
)
75 character(len
=*), intent(in
) :: x
76 integer(kind
=int16
) :: l
78 l
= int(len(x
), kind
=int16
)
81 function len32(x
) result(l
)
82 character(len
=*), intent(in
) :: x
83 integer(kind
=int32
) :: l
85 l
= int(len(x
), kind
=int32
)
88 function len64(x
) result(l
)
89 character(len
=*), intent(in
) :: x
90 integer(kind
=int64
) :: l
92 l
= int(len(x
), kind
=int64
)
95 function ulen08(x
) result(l
)
96 character(len
=*,kind
=ucs4
), intent(in
) :: x
97 integer(kind
=int8
) :: l
99 l
= int(len(x
), kind
=int8
)
102 function ulen16(x
) result(l
)
103 character(len
=*,kind
=ucs4
), intent(in
) :: x
104 integer(kind
=int16
) :: l
106 l
= int(len(x
), kind
=int16
)
109 function ulen32(x
) result(l
)
110 character(len
=*,kind
=ucs4
), intent(in
) :: x
111 integer(kind
=int32
) :: l
113 l
= int(len(x
), kind
=int32
)
116 function ulen64(x
) result(l
)
117 character(len
=*,kind
=ucs4
), intent(in
) :: x
118 integer(kind
=int64
) :: l
120 l
= int(len(x
), kind
=int64
)