Skip to content

Commit 8c5cb8d

Browse files
committed
append_prepend: gcc-15 array constructor fix
1 parent 0228a3e commit 8c5cb8d

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

test/stringlist/test_append_prepend.f90

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ subroutine test_append_prepend_string
1616
integer, parameter :: first = -100
1717
integer, parameter :: last = 100
1818
character(len=:), allocatable :: string
19+
type(string_type) :: all_strings(first:last)
20+
21+
do concurrent (i=first:last)
22+
all_strings(i) = string_type( to_string(i) )
23+
end do
1924

2025
do i = first, last
2126
string = to_string(i)
@@ -26,10 +31,10 @@ subroutine test_append_prepend_string
2631
end do
2732

2833
call compare_list( work_list, first, last + 1, 1 )
29-
call check( work_list == [ ( string_type( to_string(i) ), i = first, last ) ], &
34+
call check( work_list == all_strings, &
3035
& "test_append_prepend_string: work_list ==&
3136
& [ ( string_type( to_string(i) ), i = first, last ) ]" )
32-
call check( [ ( string_type( to_string(i) ), i = first, last ) ] == work_list, &
37+
call check( all_strings == work_list, &
3338
& "test_append_prepend_string: [ ( string_type( to_string(i) ),&
3439
& i = first, last ) ] == work_list" )
3540

@@ -47,9 +52,9 @@ subroutine test_append_prepend_string
4752
end do
4853

4954
call compare_list( reference_list, first, last + 1, 2 )
50-
call check( reference_list == [ ( string_type( to_string(i) ), i = first, last ) ], "test_append_prepend_string:&
55+
call check( reference_list == all_strings, "test_append_prepend_string:&
5156
& reference_list == [ ( string_type( to_string(i) ), i = first, last ) ]" )
52-
call check( [ ( string_type( to_string(i) ), i = first, last ) ] == reference_list, &
57+
call check( all_strings == reference_list, &
5358
& "test_append_prepend_string: [ ( string_type( to_string(i) ), i = first, last ) ] == reference_list" )
5459

5560
call check( work_list == reference_list, "test_append_prepend_string:&
@@ -66,10 +71,15 @@ subroutine test_append_prepend_array
6671
integer, parameter :: first = -100
6772
integer, parameter :: last = 100
6873
integer, parameter :: stride = 10
74+
type(string_type) :: all_strings(first:last)
75+
76+
do concurrent (j=first:last)
77+
all_strings(j) = string_type( to_string(j) )
78+
end do
6979

7080
do i = first, last - 1, stride
71-
work_list = work_list // [ ( string_type( to_string(j) ), j = i, i + stride - 1) ]
72-
call check( work_list == [ ( string_type( to_string(j) ), j = first, i + stride - 1) ], &
81+
work_list = work_list // all_strings(i:i+stride-1)
82+
call check( work_list == all_strings(first:i+stride-1), &
7383
& "test_append_prepend_array: work_list ==&
7484
& [ ( string_type( to_string(j) ), j = first, i + stride - 1) ]" )
7585

@@ -78,10 +88,10 @@ subroutine test_append_prepend_array
7888
work_list = work_list // to_string(last)
7989

8090
call compare_list( work_list, first, last + 1, 3 )
81-
call check( work_list == [ ( string_type( to_string(i) ), i = first, last) ], &
91+
call check( work_list == all_strings, &
8292
& "test_append_prepend_array: work_list ==&
8393
& [ ( string_type( to_string(i) ), i = first, last) ]" )
84-
call check( [ ( string_type( to_string(i) ), i = first, last) ] == work_list, &
94+
call check( all_strings == work_list, &
8595
& "test_append_prepend_array: [ ( string_type( to_string(i) ), i = first, last) ]&
8696
& == work_list" )
8797

@@ -91,8 +101,7 @@ subroutine test_append_prepend_array
91101
call check( reference_list /= work_list, "test_append_prepend_array:&
92102
& reference_list /= work_list" )
93103

94-
reference_list = [ ( string_type( to_string(j) ), j = i - stride + 1, i ) ] &
95-
& // reference_list
104+
reference_list = all_strings(i-stride+1:i) // reference_list
96105
call check( reference_list == &
97106
& [ ( string_type( to_string(j) ), j = i - stride + 1, last ) ], &
98107
& "test_append_prepend_array: reference_list ==&
@@ -103,10 +112,10 @@ subroutine test_append_prepend_array
103112
reference_list = to_string(first) // reference_list
104113

105114
call compare_list( reference_list, first, last + 1, 4 )
106-
call check( [ ( string_type( to_string(i) ), i = first, last) ] == reference_list, &
115+
call check( all_strings == reference_list, &
107116
& "test_append_prepend_array:&
108117
& [ ( string_type( to_string(i) ), i = first, last) ] == reference_list" )
109-
call check( [ ( string_type( to_string(i) ), i = first, last) ] == reference_list, &
118+
call check( all_strings == reference_list, &
110119
& "test_append_prepend_array: [ ( string_type( to_string(i) ), i = first, last) ]&
111120
& == reference_list" )
112121

@@ -124,6 +133,11 @@ subroutine test_append_prepend_list
124133
integer, parameter :: first = -100
125134
integer, parameter :: last = 100
126135
integer, parameter :: stride = 10
136+
type(string_type) :: all_strings(first:last)
137+
138+
do concurrent (j=first:last)
139+
all_strings(j) = string_type( to_string(j) )
140+
end do
127141

128142
do i = first, last - 1, stride
129143
call temp_list%clear()
@@ -132,7 +146,7 @@ subroutine test_append_prepend_list
132146
end do
133147
work_list = work_list // temp_list
134148

135-
call check( work_list == [ ( string_type( to_string(j) ), j = first, i + stride - 1 ) ], &
149+
call check( work_list == all_strings(first:i+stride-1), &
136150
& "test_append_prepend_list: work_list ==&
137151
& [ ( to_string(j), j = first, i + stride - 1) ]" )
138152

@@ -141,9 +155,9 @@ subroutine test_append_prepend_list
141155
work_list = work_list // to_string(last)
142156

143157
call compare_list( work_list, first, last + 1, 5 )
144-
call check( work_list == [ ( string_type( to_string(i) ), i = first, last) ], "test_append_prepend_list:&
158+
call check( work_list == all_strings, "test_append_prepend_list:&
145159
& work_list == [ ( string_type( to_string(i) ), i = first, last) ]" )
146-
call check( [ ( string_type( to_string(i) ), i = first, last) ] == work_list, &
160+
call check( all_strings == work_list, &
147161
& "test_append_prepend_list: [ ( string_type( to_string(i) ), i = first, last) ]&
148162
& == work_list" )
149163

@@ -160,7 +174,7 @@ subroutine test_append_prepend_list
160174
reference_list = temp_list // reference_list
161175

162176
call check( reference_list == &
163-
& [ ( string_type( to_string(j) ), j = i - stride + 1, last ) ], &
177+
& all_strings(i-stride+1:last), &
164178
& "test_append_prepend_list: reference_list ==&
165179
& [ ( string_type( to_string(j) ), j = i - stride + 1, last ) ]" )
166180

@@ -169,10 +183,10 @@ subroutine test_append_prepend_list
169183
reference_list = to_string(first) // reference_list
170184

171185
call compare_list( reference_list, first, last + 1, 6 )
172-
call check( [ ( string_type( to_string(i) ), i = first, last) ] == reference_list, &
186+
call check( all_strings == reference_list, &
173187
& "test_append_prepend_list:&
174188
& [ ( string_type( to_string(i) ), i = first, last) ] == reference_list" )
175-
call check( [ ( string_type( to_string(i) ), i = first, last) ] == reference_list, &
189+
call check( all_strings == reference_list, &
176190
& "test_append_prepend_list: [ ( string_type( to_string(i) ), i = first, last) ]&
177191
& == reference_list" )
178192

0 commit comments

Comments
 (0)