xref: /llvm-project/flang/test/Semantics/io08.f90 (revision eb77f442b342a1bb234254e05759933bad9dfab1)
1! RUN: %python %S/test_errors.py %s %flang_fc1
2  character(20), parameter :: kp_ok = "(4P,E20.5,E15.5)"
3  character(20), parameter :: kp_xx = "(4P,E20.5,E15.2)"
4
5  write(*,*)
6  write(*,'()')
7  write(*,'(A)')
8  write(*,'(2X:2X)')
9  write(*,'(2X/2X)')
10  write(*,'(3/2X)')
11  write(*,'(3PF5.2)')
12  write(*,'(+3PF5.2)')
13  write(*,'(-3PF5.2)')
14  write(*,'(000p,10p,0p)')
15  write(*,'(3P7D5.2)')
16  write(*,'(3P,7F5.2)')
17  write(*,'(2X,(i3))')
18  write(*,'(5X,*(2X,I2))')
19  write(*,'(5X,*(2X,DT))')
20  write(*,'(*(DT))')
21  write(*,'(*(DT"value"))')
22  write(*,'(*(DT(+1,0,-1)))')
23  write(*,'(*(DT"value"(+1,000,-1)))')
24  write(*,'(*(DT(0)))')
25  write(*,'(S,(RZ),2E10.3)')
26  write(*,'(7I2)')
27  write(*,'(07I02)')
28  write(*,'(07I02.01)')
29  write(*,'(07I02.02)')
30  write(*,'(I0)')
31  write(*,'(G4.2)')
32  write(*,'(G0.8)')
33  write(*,'(T3)')
34  write(*,'("abc")')
35  write(*,'("""abc""")')
36  write(*,'("a""""bc", 2x)')
37  write(*,'(3Habc)')
38  write(*,'(3Habc, 2X, 3X)')
39  write(*,'(987654321098765432X)')
40  write(*,'($)')
41  write(*,'(\)')
42  write(*,'(RZ,RU,RP,RN,RD,RC,SS,SP,S,3G15.3e2)')
43  write(*, '(' // achar( 9) // ')') ! horizontal tab
44  write(*, '(' // achar(11) // ')') ! vertical tab
45  write(*, '(' // achar(32) // ')') ! space
46  write(*, kp_ok)
47  write(*, '(-4P,E20.5,E15.5)')
48  write(*, '(D20.0)')
49
50  ! C1302 warnings; no errors
51  write(*,'(3P7I2)')
52  write(*,'(5X i3)')
53  write(*,'(XEN)')
54
55  !ERROR: Empty format expression
56  write(*,"")
57
58  !ERROR: Empty format expression
59  write(*,"" // '' // "")
60
61  !ERROR: Format expression must have an initial '('
62  write(*,'I3')
63
64  !ERROR: Unexpected '+' in format expression
65  write(*,'(+7I2)')
66
67  !ERROR: Unexpected '-' in format expression
68  write(*,'(-7I2)')
69
70  !ERROR: 'P' edit descriptor must have a scale factor
71  write(*,'(P7F5.2)')
72
73  !ERROR: 'P' edit descriptor must have a scale factor
74  write(*,'(P7F' // '5.2)')
75
76  !ERROR: Unexpected integer constant
77  write(*,'(X,3,3L4)')
78
79  !ERROR: Unexpected ',' before ')' in format expression
80  write(*,'(X,i3,)')
81
82  !ERROR: Unexpected ',' in format expression
83  write(*,'(X,i3,,)')
84
85  !ERROR: Unexpected ',' in format expression
86  !ERROR: Unexpected ',' before ')' in format expression
87  write(*,'(X,i3,,,)')
88
89  !ERROR: Unexpected ',' before ')' in format expression
90  write(*,'(X,(i3,))')
91
92  !ERROR: Unexpected '*' in format expression
93  write(*,'(*)')
94
95  !ERROR: Expected integer constant in 'DT' edit descriptor v-list
96  write(*,'(*(DT(+1,0,=1)))')
97
98  !ERROR: Expected integer constant in 'DT' edit descriptor v-list
99  write(*,'(DT(1,0,+))')
100
101  !ERROR: Expected integer constant in 'DT' edit descriptor v-list
102  write(*,'(DT(1,0,*))')
103
104  !ERROR: Expected ',' or ')' in 'DT' edit descriptor v-list
105  write(*,'(DT(1,0,2*))')
106
107  !ERROR: Expected ',' or ')' in 'DT' edit descriptor v-list
108  write(*,'(DT(1,0,2*,+,?))')
109
110  !ERROR: Expected integer constant in 'DT' edit descriptor v-list
111  !ERROR: Unterminated format expression
112  write(*,'(DT(1,0,*)')
113
114  !ERROR: Expected ',' or ')' in 'DT' edit descriptor v-list
115  !ERROR: Unterminated format expression
116  write(*,'(DT(1,0,2*,+,?)')
117
118  !ERROR: Unexpected '?' in format expression
119  !ERROR: Unexpected ',' in format expression
120  write(*,'(?,*(DT(+1,,1)))')
121
122  !ERROR: Repeat specifier before unlimited format item list
123  !ERROR: Unlimited format item list must contain a data edit descriptor
124   write(*,'(5X,3*(2(X)))')
125
126  !ERROR: Nested unlimited format item list
127  write(*,'(D12.2,(*(F10.2)))')
128
129  !ERROR: Unlimited format item list must contain a data edit descriptor
130  write(*,'(5X,*(2(X)))')
131
132  !ERROR: Character in format after unlimited format item list
133  write(*,'(*(Z5),*(2F20.3))')
134
135  !ERROR: Character in format after unlimited format item list
136  write(*,'(*(B5),*(2(I5)))')
137
138  !ERROR: Character in format after unlimited format item list
139  write(*,'(*(I5), D12.7)')
140
141  !ERROR: 'I' edit descriptor 'm' value is greater than 'w' value
142  write(*,'(07I02.0 3)')
143
144  !ERROR: 'Z' edit descriptor 'm' value is greater than 'w' value
145  write(*,'(07Z02.4)')
146
147  !ERROR: 'I' edit descriptor repeat specifier must be positive
148  write(*,'(0I2)')
149
150  !ERROR: List repeat specifier must be positive
151  write(*,'(0(I2))')
152
153  !ERROR: List repeat specifier must be positive
154  write(*,'(000(I2))')
155
156  !ERROR: List repeat specifier must be positive
157  !ERROR: 'I' edit descriptor repeat specifier must be positive
158  write(*,'(0(0I2))')
159
160  !ERROR: Kind parameter '_' character in format expression
161  write(*,'(5_4X)')
162
163  !ERROR: Unexpected '+' in format expression
164  write(*,'(I+3)')
165
166  !ERROR: Unexpected '-' in format expression
167  write(*,'(I-3)')
168
169  !ERROR: Unexpected '-' in format expression
170  write(*,'(I-3, X)')
171
172  !ERROR: 'X' edit descriptor must have a positive position value
173  write(*,'(0X)')
174
175  !ERROR: Unexpected 'Y' in format expression
176  write(*,'(XY)')
177
178  !ERROR: Unexpected 'Y' in format expression
179  write(*,'(XYM)')
180
181  !ERROR: Unexpected 'M' in format expression
182  write(*,'(MXY)')
183
184  !ERROR: Unexpected 'R' in format expression
185  !ERROR: Unexpected 'R' in format expression
186  write(*,"(RR, RV)")
187
188  !ERROR: Unexpected '-' in format expression
189  !ERROR: Unexpected 'Y' in format expression
190  write(*,'(I-3, XY)')
191
192  !ERROR: 'A' edit descriptor 'w' value must be positive
193  write(*,'(A0)')
194
195  write(*,'(L0)') ! warning, not error
196
197  !ERROR: Expected 'G' edit descriptor '.d' value
198  write(*,'(G4)')
199
200  !ERROR: A 'G0' edit descriptor must not have an 'e' value
201  write(*,'(G0.8e)')
202
203  !ERROR: A 'G0' edit descriptor must not have an 'e' value
204  write(*,'(G0.8e2)')
205
206  !ERROR: Kind parameter '_' character in format expression
207  write(*,'(I5_4)')
208
209  !ERROR: Kind parameter '_' character in format expression
210  write(*,'(5_4P)')
211
212  !ERROR: 'T' edit descriptor must have a positive position value
213  write(*,'(T0)')
214
215  !ERROR: 'T' edit descriptor must have a positive position value
216  !ERROR: Unterminated format expression
217  write(*,'(T0')
218
219  !ERROR: 'TL' edit descriptor must have a positive position value
220  !ERROR: 'T' edit descriptor must have a positive position value
221  !ERROR: Expected 'EN' edit descriptor 'd' value after '.'
222  write(*,'(TL0,T0,EN12.)')
223
224  !ERROR: Expected 'EX' edit descriptor 'e' value after 'E'
225  write(*,'(EX12.3e2, EX12.3e)')
226
227  !ERROR: 'TL' edit descriptor must have a positive position value
228  !ERROR: 'T' edit descriptor must have a positive position value
229  !ERROR: Unterminated format expression
230  write(*,'(TL00,T000')
231
232  !ERROR: Unterminated format expression
233  write(*,'(')
234
235  !ERROR: Unterminated format expression
236  write(*,'(-')
237
238  !ERROR: Unterminated format expression
239  write(*,'(I3+')
240
241  !ERROR: Unterminated format expression
242  write(*,'(I3,-')
243
244  !ERROR: Unexpected integer constant
245  write(*,'(3)')
246
247  !ERROR: Unexpected ',' before ')' in format expression
248  write(*,'(3,)')
249
250  !ERROR: Unexpected ',' in format expression
251  write(*,'(,3)')
252
253  !ERROR: Unexpected ',' before ')' in format expression
254  write(*,'(,)')
255
256  !ERROR: Unterminated format expression
257  write(*,'(X')
258
259  !ERROR: Unterminated format expression
260  write(*,'(XX') ! C1302 warning is not an error
261
262  !ERROR: Unexpected '@' in format expression
263  !ERROR: Unexpected '#' in format expression
264  !ERROR: Unexpected '&' in format expression
265  write(*,'(@@, #  ,&&& &&, ignore error 4)')
266
267  !ERROR: Repeat specifier before 'TR' edit descriptor
268  write(*,'(3TR0)')
269
270  !ERROR: 'TR' edit descriptor must have a positive position value
271  write(*,'(TR0)')
272
273  !ERROR: Kind parameter '_' character in format expression
274  write(*,'(3_4X)')
275
276  !ERROR: Kind parameter '_' character in format expression
277  write(*,'(1_"abc")')
278
279  !ERROR: Unterminated string
280  !ERROR: Unterminated format expression
281  write(*,'("abc)')
282
283  !ERROR: Unexpected '_' in format expression
284  write(*,'("abc"_1)')
285
286  !ERROR: Unexpected '@' in format expression
287  write(*,'(3Habc, 3@, X)')
288
289  !ERROR: Unterminated format expression
290  write(*,'(4Habc)')
291
292  !ERROR: Unterminated 'H' edit descriptor
293  !ERROR: Unterminated format expression
294  write(*,'(5Habc)')
295
296  !ERROR: Unterminated 'H' edit descriptor
297  !ERROR: Unterminated format expression
298  write(*,'(50Habc)')
299
300  !ERROR: Integer overflow in format expression
301  write(*,'(9876543210987654321X)')
302
303  !ERROR: Integer overflow in format expression
304  write(*,'(98765432109876543210X)')
305
306  !ERROR: Integer overflow in format expression
307  write(*,'(I98765432109876543210)')
308
309  !ERROR: Integer overflow in format expression
310  write(*,'(45I20.98765432109876543210, 45I20)')
311
312  !ERROR: Integer overflow in format expression
313  write(*,'(45' // '  I20.9876543' // '2109876543210, 45I20)')
314
315  !ERROR: Repeat specifier before '$' edit descriptor
316  write(*,'(7$)')
317
318  !ERROR: Positive scale factor k (from kP) and width d in a 'E' edit descriptor must satisfy 'k < d+2'
319  write(*, kp_xx)
320
321  !ERROR: Negative scale factor k (from kP) and width d in a 'E' edit descriptor must satisfy '-d < k'
322  write(*, '(-4P,E20.5,E15.2)')
323end
324