diff options
-rw-r--r-- | testerrors.lua | 432 |
1 files changed, 257 insertions, 175 deletions
diff --git a/testerrors.lua b/testerrors.lua index d39b8b9..1c5bb9f 100644 --- a/testerrors.lua +++ b/testerrors.lua | |||
@@ -23,6 +23,8 @@ function testerror(repatt, msg) | |||
23 | end | 23 | end |
24 | end | 24 | end |
25 | 25 | ||
26 | -- testing NoPatt | ||
27 | |||
26 | testerror([[~]], [[ | 28 | testerror([[~]], [[ |
27 | L1:C1: no pattern found | 29 | L1:C1: no pattern found |
28 | ~ | 30 | ~ |
@@ -35,6 +37,8 @@ L1:C1: no pattern found | |||
35 | ^ | 37 | ^ |
36 | ]]) | 38 | ]]) |
37 | 39 | ||
40 | -- testing ExtraChars | ||
41 | |||
38 | testerror([['p'~]], [[ | 42 | testerror([['p'~]], [[ |
39 | L1:C4: unexpected characters after the pattern | 43 | L1:C4: unexpected characters after the pattern |
40 | 'p'~ | 44 | 'p'~ |
@@ -47,6 +51,8 @@ L1:C5: unexpected characters after the pattern | |||
47 | ^ | 51 | ^ |
48 | ]]) | 52 | ]]) |
49 | 53 | ||
54 | -- testing ExpPatt1 | ||
55 | |||
50 | testerror([['p' /{1}]], [[ | 56 | testerror([['p' /{1}]], [[ |
51 | L1:C9: expected a pattern after '/' or the label(s) | 57 | L1:C9: expected a pattern after '/' or the label(s) |
52 | 'p' /{1} | 58 | 'p' /{1} |
@@ -71,6 +77,8 @@ L1:C6: expected a pattern after '/' or the label(s) | |||
71 | ^ | 77 | ^ |
72 | ]]) | 78 | ]]) |
73 | 79 | ||
80 | -- testing ExpPatt2 | ||
81 | |||
74 | testerror([[&]], [[ | 82 | testerror([[&]], [[ |
75 | L1:C2: expected a pattern after '&' | 83 | L1:C2: expected a pattern after '&' |
76 | & | 84 | & |
@@ -107,6 +115,8 @@ L1:C3: expected a pattern after '&' | |||
107 | ^ | 115 | ^ |
108 | ]]) | 116 | ]]) |
109 | 117 | ||
118 | -- testing ExpPatt3 | ||
119 | |||
110 | testerror([[!]], [[ | 120 | testerror([[!]], [[ |
111 | L1:C2: expected a pattern after '!' | 121 | L1:C2: expected a pattern after '!' |
112 | ! | 122 | ! |
@@ -143,6 +153,107 @@ L1:C3: expected a pattern after '!' | |||
143 | ^ | 153 | ^ |
144 | ]]) | 154 | ]]) |
145 | 155 | ||
156 | -- testing ExpPatt4 | ||
157 | |||
158 | testerror([[()]], [[ | ||
159 | L1:C2: expected a pattern after '(' | ||
160 | () | ||
161 | ^ | ||
162 | ]]) | ||
163 | |||
164 | testerror([[($$$)]], [[ | ||
165 | L1:C2: expected a pattern after '(' | ||
166 | ($$$) | ||
167 | ^ | ||
168 | ]]) | ||
169 | |||
170 | -- testing ExpPatt5 | ||
171 | |||
172 | testerror([[{: *** :}]], [[ | ||
173 | L1:C3: expected a pattern after ':' | ||
174 | {: *** :} | ||
175 | ^ | ||
176 | ]]) | ||
177 | |||
178 | testerror([[{:group: *** :}]], [[ | ||
179 | L1:C9: expected a pattern after ':' | ||
180 | {:group: *** :} | ||
181 | ^ | ||
182 | ]]) | ||
183 | |||
184 | testerror([[x <- {:x:}]], [[ | ||
185 | L1:C10: expected a pattern after ':' | ||
186 | x <- {:x:} | ||
187 | ^ | ||
188 | ]]) | ||
189 | |||
190 | -- testing ExpPatt6 | ||
191 | |||
192 | testerror([[{~~}]], [[ | ||
193 | L1:C3: expected a pattern after '{~' | ||
194 | {~~} | ||
195 | ^ | ||
196 | ]]) | ||
197 | |||
198 | testerror([[{ {~ } ~}]], [[ | ||
199 | L1:C5: expected a pattern after '{~' | ||
200 | { {~ } ~} | ||
201 | ^ | ||
202 | L1:C10: missing closing '}' | ||
203 | { {~ } ~} | ||
204 | ^ | ||
205 | ]]) | ||
206 | |||
207 | testerror([[{~ ^_^ ~}]], [[ | ||
208 | L1:C3: expected a pattern after '{~' | ||
209 | {~ ^_^ ~} | ||
210 | ^ | ||
211 | ]]) | ||
212 | |||
213 | -- testing ExpPatt7 | ||
214 | |||
215 | testerror([[{||}]], [[ | ||
216 | L1:C3: expected a pattern after '{|' | ||
217 | {||} | ||
218 | ^ | ||
219 | ]]) | ||
220 | |||
221 | testerror([[{|@|}]], [[ | ||
222 | L1:C3: expected a pattern after '{|' | ||
223 | {|@|} | ||
224 | ^ | ||
225 | ]]) | ||
226 | |||
227 | -- testing ExpPatt8 | ||
228 | |||
229 | testerror([[S <-]], [[ | ||
230 | L1:C5: expected a pattern after '<-' | ||
231 | S <- | ||
232 | ^ | ||
233 | ]]) | ||
234 | |||
235 | testerror([[S <- 'p' T <-]], [[ | ||
236 | L1:C14: expected a pattern after '<-' | ||
237 | S <- 'p' T <- | ||
238 | ^ | ||
239 | ]]) | ||
240 | |||
241 | -- testing ExpPattOrClose | ||
242 | |||
243 | testerror([[{0}]], [[ | ||
244 | L1:C2: expected a pattern or closing '}' after '{' | ||
245 | {0} | ||
246 | ^ | ||
247 | ]]) | ||
248 | |||
249 | testerror([[{ :'p': }]], [[ | ||
250 | L1:C2: expected a pattern or closing '}' after '{' | ||
251 | { :'p': } | ||
252 | ^ | ||
253 | ]]) | ||
254 | |||
255 | -- testing ExpNum | ||
256 | |||
146 | testerror([['p' ^ n]], [[ | 257 | testerror([['p' ^ n]], [[ |
147 | L1:C6: expected a number after '^', '+' or '-' (no space) | 258 | L1:C6: expected a number after '^', '+' or '-' (no space) |
148 | 'p' ^ n | 259 | 'p' ^ n |
@@ -161,6 +272,8 @@ L1:C5: expected a number after '^', '+' or '-' (no space) | |||
161 | ^ | 272 | ^ |
162 | ]]) | 273 | ]]) |
163 | 274 | ||
275 | -- testing ExpCap | ||
276 | |||
164 | testerror([['p' -> {]], [[ | 277 | testerror([['p' -> {]], [[ |
165 | L1:C7: expected a string, number, '{}' or name after '->' | 278 | L1:C7: expected a string, number, '{}' or name after '->' |
166 | 'p' -> { | 279 | 'p' -> { |
@@ -185,6 +298,8 @@ L1:C7: expected a string, number, '{}' or name after '->' | |||
185 | ^ | 298 | ^ |
186 | ]]) | 299 | ]]) |
187 | 300 | ||
301 | -- testing ExpName1 | ||
302 | |||
188 | testerror([['p' =>]], [[ | 303 | testerror([['p' =>]], [[ |
189 | L1:C7: expected the name of a rule after '=>' | 304 | L1:C7: expected the name of a rule after '=>' |
190 | 'p' => | 305 | 'p' => |
@@ -197,24 +312,76 @@ L1:C7: expected the name of a rule after '=>' | |||
197 | ^ | 312 | ^ |
198 | ]]) | 313 | ]]) |
199 | 314 | ||
200 | testerror([[()]], [[ | 315 | -- testing ExpName2 |
201 | L1:C2: expected a pattern after '(' | 316 | |
202 | () | 317 | testerror([['<' {:tag: [a-z]+ :} '>' '<' = '>']], [[ |
318 | L1:C31: expected the name of a rule after '=' (no space) | ||
319 | '<' {:tag: [a-z]+ :} '>' '<' = '>' | ||
320 | ^ | ||
321 | ]]) | ||
322 | |||
323 | testerror([['<' {:tag: [a-z]+ :} '>' '<' = tag '>']], [[ | ||
324 | L1:C31: expected the name of a rule after '=' (no space) | ||
325 | '<' {:tag: [a-z]+ :} '>' '<' = tag '>' | ||
326 | ^ | ||
327 | ]]) | ||
328 | |||
329 | -- testing ExpName3 | ||
330 | |||
331 | testerror([[<>]], [[ | ||
332 | L1:C2: expected the name of a rule after '<' (no space) | ||
333 | <> | ||
203 | ^ | 334 | ^ |
204 | ]]) | 335 | ]]) |
205 | 336 | ||
206 | testerror([[($$$)]], [[ | 337 | testerror([[<123>]], [[ |
207 | L1:C2: expected a pattern after '(' | 338 | L1:C2: expected the name of a rule after '<' (no space) |
208 | ($$$) | 339 | <123> |
209 | ^ | 340 | ^ |
210 | ]]) | 341 | ]]) |
211 | 342 | ||
212 | testerror([[('p' ('q' / 'r')]], [[ | 343 | testerror([[< hello >]], [[ |
213 | L1:C17: missing closing ')' | 344 | L1:C2: expected the name of a rule after '<' (no space) |
214 | ('p' ('q' / 'r') | 345 | < hello > |
215 | ^ | 346 | ^ |
347 | ]]) | ||
348 | |||
349 | testerror([[<<S>>]], [[ | ||
350 | L1:C2: expected the name of a rule after '<' (no space) | ||
351 | <<S>> | ||
352 | ^ | ||
216 | ]]) | 353 | ]]) |
217 | 354 | ||
355 | -- testing ExpLab1 | ||
356 | |||
357 | testerror([['p' /{} 'q']], [[ | ||
358 | L1:C7: expected at least one label after '{' | ||
359 | 'p' /{} 'q' | ||
360 | ^ | ||
361 | ]]) | ||
362 | |||
363 | testerror([[%{ 'label' }]], [[ | ||
364 | L1:C3: expected at least one label after '{' | ||
365 | %{ 'label' } | ||
366 | ^ | ||
367 | ]]) | ||
368 | |||
369 | -- testing ExpLab2 | ||
370 | |||
371 | testerror([['p' /{1,2,3,} 'q']], [[ | ||
372 | L1:C13: expected a label after the comma | ||
373 | 'p' /{1,2,3,} 'q' | ||
374 | ^ | ||
375 | ]]) | ||
376 | |||
377 | testerror([[%{ a,,b,,c }]], [[ | ||
378 | L1:C6: expected a label after the comma | ||
379 | %{ a,,b,,c } | ||
380 | ^ | ||
381 | ]]) | ||
382 | |||
383 | -- testing ExpNameOrLab | ||
384 | |||
218 | testerror([[% s]], [[ | 385 | testerror([[% s]], [[ |
219 | L1:C2: expected a name or label after '%' (no space) | 386 | L1:C2: expected a name or label after '%' (no space) |
220 | % s | 387 | % s |
@@ -227,18 +394,29 @@ L1:C2: expected a name or label after '%' (no space) | |||
227 | ^ | 394 | ^ |
228 | ]]) | 395 | ]]) |
229 | 396 | ||
230 | testerror([[{: *** :}]], [[ | 397 | -- testing ExpItem |
231 | L1:C3: expected a pattern after ':' | 398 | |
232 | {: *** :} | 399 | testerror([[ |
233 | ^ | 400 | "p" [ |
401 | abc | ||
402 | ] "q" | ||
403 | ]], [[ | ||
404 | L1:C6: expected at least one item after '[' or '^' | ||
405 | "p" [ | ||
406 | ^ | ||
234 | ]]) | 407 | ]]) |
235 | 408 | ||
236 | testerror([[{:group: *** :}]], [[ | 409 | -- testing MisClose1 |
237 | L1:C9: expected a pattern after ':' | 410 | |
238 | {:group: *** :} | 411 | testerror([[('p' ('q' / 'r')]], [[ |
239 | ^ | 412 | L1:C17: missing closing ')' |
413 | ('p' ('q' / 'r') | ||
414 | ^ | ||
240 | ]]) | 415 | ]]) |
241 | 416 | ||
417 | -- testing MisClose2 | ||
418 | |||
419 | -- two errors are reported due to the ignore strategy | ||
242 | testerror([[{: group: 'p' :}]], [[ | 420 | testerror([[{: group: 'p' :}]], [[ |
243 | L1:C9: missing closing ':}' | 421 | L1:C9: missing closing ':}' |
244 | {: group: 'p' :} | 422 | {: group: 'p' :} |
@@ -254,38 +432,7 @@ S <- {: 'p' T <- 'q' | |||
254 | ^ | 432 | ^ |
255 | ]]) | 433 | ]]) |
256 | 434 | ||
257 | testerror([['<' {:tag: [a-z]+ :} '>' '<' = '>']], [[ | 435 | -- testing MisClose3 |
258 | L1:C31: expected the name of a rule after '=' (no space) | ||
259 | '<' {:tag: [a-z]+ :} '>' '<' = '>' | ||
260 | ^ | ||
261 | ]]) | ||
262 | |||
263 | testerror([['<' {:tag: [a-z]+ :} '>' '<' = tag '>']], [[ | ||
264 | L1:C31: expected the name of a rule after '=' (no space) | ||
265 | '<' {:tag: [a-z]+ :} '>' '<' = tag '>' | ||
266 | ^ | ||
267 | ]]) | ||
268 | |||
269 | testerror([[{~~}]], [[ | ||
270 | L1:C3: expected a pattern after '{~' | ||
271 | {~~} | ||
272 | ^ | ||
273 | ]]) | ||
274 | |||
275 | testerror([[{ {~ } ~}]], [[ | ||
276 | L1:C5: expected a pattern after '{~' | ||
277 | { {~ } ~} | ||
278 | ^ | ||
279 | L1:C10: missing closing '}' | ||
280 | { {~ } ~} | ||
281 | ^ | ||
282 | ]]) | ||
283 | |||
284 | testerror([[{~ ^_^ ~}]], [[ | ||
285 | L1:C3: expected a pattern after '{~' | ||
286 | {~ ^_^ ~} | ||
287 | ^ | ||
288 | ]]) | ||
289 | 436 | ||
290 | testerror([['p' {~ ('q' 'r') / 's']], [[ | 437 | testerror([['p' {~ ('q' 'r') / 's']], [[ |
291 | L1:C23: missing closing '~}' | 438 | L1:C23: missing closing '~}' |
@@ -293,47 +440,27 @@ L1:C23: missing closing '~}' | |||
293 | ^ | 440 | ^ |
294 | ]]) | 441 | ]]) |
295 | 442 | ||
296 | testerror([[{0}]], [[ | 443 | -- testing MisClose4 |
297 | L1:C2: expected a pattern or closing '}' after '{' | ||
298 | {0} | ||
299 | ^ | ||
300 | ]]) | ||
301 | 444 | ||
302 | testerror([[{ :'p': }]], [[ | 445 | -- two errors are reported due to the ignore strategy |
303 | L1:C2: expected a pattern or closing '}' after '{' | 446 | testerror([['p' {| 'q' / 'r' }]], [[ |
304 | { :'p': } | 447 | L1:C17: missing closing '|}' |
305 | ^ | 448 | 'p' {| 'q' / 'r' } |
449 | ^ | ||
450 | L1:C18: unexpected characters after the pattern | ||
451 | 'p' {| 'q' / 'r' } | ||
452 | ^ | ||
306 | ]]) | 453 | ]]) |
307 | 454 | ||
455 | -- testing MisClose5 | ||
456 | |||
308 | testerror([[{ 'p' ]], [[ | 457 | testerror([[{ 'p' ]], [[ |
309 | L1:C6: missing closing '}' | 458 | L1:C6: missing closing '}' |
310 | { 'p' | 459 | { 'p' |
311 | ^ | 460 | ^ |
312 | ]]) | 461 | ]]) |
313 | 462 | ||
314 | testerror([[<>]], [[ | 463 | -- testing MisClose6 |
315 | L1:C2: expected the name of a rule after '<' (no space) | ||
316 | <> | ||
317 | ^ | ||
318 | ]]) | ||
319 | |||
320 | testerror([[<123>]], [[ | ||
321 | L1:C2: expected the name of a rule after '<' (no space) | ||
322 | <123> | ||
323 | ^ | ||
324 | ]]) | ||
325 | |||
326 | testerror([[< hello >]], [[ | ||
327 | L1:C2: expected the name of a rule after '<' (no space) | ||
328 | < hello > | ||
329 | ^ | ||
330 | ]]) | ||
331 | |||
332 | testerror([[<<S>>]], [[ | ||
333 | L1:C2: expected the name of a rule after '<' (no space) | ||
334 | <<S>> | ||
335 | ^ | ||
336 | ]]) | ||
337 | 464 | ||
338 | testerror([[<patt]], [[ | 465 | testerror([[<patt]], [[ |
339 | L1:C6: missing closing '>' | 466 | L1:C6: missing closing '>' |
@@ -347,18 +474,16 @@ L1:C8: missing closing '>' | |||
347 | ^ | 474 | ^ |
348 | ]]) | 475 | ]]) |
349 | 476 | ||
350 | testerror([[S <-]], [[ | 477 | -- testing MisClose7 |
351 | L1:C5: expected a pattern after '<-' | ||
352 | S <- | ||
353 | ^ | ||
354 | ]]) | ||
355 | 478 | ||
356 | testerror([[S <- 'p' T <-]], [[ | 479 | testerror([['{' %{ a, b '}']], [[ |
357 | L1:C14: expected a pattern after '<-' | 480 | L1:C12: missing closing '}' |
358 | S <- 'p' T <- | 481 | '{' %{ a, b '}' |
359 | ^ | 482 | ^ |
360 | ]]) | 483 | ]]) |
361 | 484 | ||
485 | -- testing MisClose8 | ||
486 | |||
362 | testerror([[[]], [[ | 487 | testerror([[[]], [[ |
363 | L1:C1: missing closing ']' | 488 | L1:C1: missing closing ']' |
364 | [ | 489 | [ |
@@ -389,41 +514,7 @@ L1:C1: missing closing ']' | |||
389 | ^ | 514 | ^ |
390 | ]]) | 515 | ]]) |
391 | 516 | ||
392 | testerror([['p' /{} 'q']], [[ | 517 | -- testing MisTerm1 |
393 | L1:C7: expected at least one label after '{' | ||
394 | 'p' /{} 'q' | ||
395 | ^ | ||
396 | ]]) | ||
397 | |||
398 | testerror([[%{ 'label' }]], [[ | ||
399 | L1:C3: expected at least one label after '{' | ||
400 | %{ 'label' } | ||
401 | ^ | ||
402 | ]]) | ||
403 | |||
404 | testerror([['p' /{1,2,3,} 'q']], [[ | ||
405 | L1:C13: expected a label after the comma | ||
406 | 'p' /{1,2,3,} 'q' | ||
407 | ^ | ||
408 | ]]) | ||
409 | |||
410 | testerror([[%{ a,,b,,c }]], [[ | ||
411 | L1:C6: expected a label after the comma | ||
412 | %{ a,,b,,c } | ||
413 | ^ | ||
414 | ]]) | ||
415 | |||
416 | testerror([['{' %{ a, b '}']], [[ | ||
417 | L1:C12: missing closing '}' | ||
418 | '{' %{ a, b '}' | ||
419 | ^ | ||
420 | ]]) | ||
421 | |||
422 | testerror([[Q <- "To be or not to be...]], [[ | ||
423 | L1:C6: missing terminating double quote | ||
424 | Q <- "To be or not to be... | ||
425 | ^ | ||
426 | ]]) | ||
427 | 518 | ||
428 | testerror([['That is the question...]], [[ | 519 | testerror([['That is the question...]], [[ |
429 | L1:C1: missing terminating single quote | 520 | L1:C1: missing terminating single quote |
@@ -431,32 +522,16 @@ L1:C1: missing terminating single quote | |||
431 | ^ | 522 | ^ |
432 | ]]) | 523 | ]]) |
433 | 524 | ||
434 | testerror([[{||}]], [[ | 525 | -- testing MisTerm2 |
435 | L1:C3: expected a pattern after '{|' | ||
436 | {||} | ||
437 | ^ | ||
438 | ]]) | ||
439 | 526 | ||
440 | testerror([[{|@|}]], [[ | 527 | testerror([[Q <- "To be or not to be...]], [[ |
441 | L1:C3: expected a pattern after '{|' | 528 | L1:C6: missing terminating double quote |
442 | {|@|} | 529 | Q <- "To be or not to be... |
443 | ^ | 530 | ^ |
444 | ]]) | ||
445 | |||
446 | testerror([['p' {| 'q' / 'r' }]], [[ | ||
447 | L1:C17: missing closing '|}' | ||
448 | 'p' {| 'q' / 'r' } | ||
449 | ^ | ||
450 | L1:C18: unexpected characters after the pattern | ||
451 | 'p' {| 'q' / 'r' } | ||
452 | ^ | ||
453 | ]]) | 531 | ]]) |
454 | 532 | ||
455 | testerror([[x <- {:x:}]], [[ | 533 | -- testing error recovery, more complex grammars (multiline), |
456 | L1:C10: expected a pattern after ':' | 534 | -- and pointer positions in error recovery |
457 | x <- {:x:} | ||
458 | ^ | ||
459 | ]]) | ||
460 | 535 | ||
461 | testerror([[&'p'/&/!/'p'^'q']], [[ | 536 | testerror([[&'p'/&/!/'p'^'q']], [[ |
462 | L1:C7: expected a pattern after '&' | 537 | L1:C7: expected a pattern after '&' |
@@ -483,32 +558,6 @@ L2:C15: expected a pattern after '!' | |||
483 | ^ | 558 | ^ |
484 | ]]) | 559 | ]]) |
485 | 560 | ||
486 | testerror([[ | ||
487 | A <- %nosuch %def | ||
488 | A <- 'A again' | ||
489 | A <- 'and again' | ||
490 | ]], [[ | ||
491 | name 'nosuch' undefined | ||
492 | ]]) | ||
493 | |||
494 | testerror([[names not in grammar]], [[ | ||
495 | rule 'names' used outside a grammar | ||
496 | ]]) | ||
497 | |||
498 | testerror([[ | ||
499 | A <- %nosuch %def | ||
500 | A <- 'A again' | ||
501 | A <- 'and again' | ||
502 | ]], [[ | ||
503 | name 'nosuch' undefined | ||
504 | ]]) | ||
505 | |||
506 | testerror([[ A <- %nosuch ('error' ]], [[ | ||
507 | L1:C23: missing closing ')' | ||
508 | A <- %nosuch ('error' | ||
509 | ^ | ||
510 | ]]) | ||
511 | |||
512 | testerror([['a' / &@ ('c' / 'd')]], [[ | 561 | testerror([['a' / &@ ('c' / 'd')]], [[ |
513 | L1:C8: expected a pattern after '&' | 562 | L1:C8: expected a pattern after '&' |
514 | 'a' / &@ ('c' / 'd') | 563 | 'a' / &@ ('c' / 'd') |
@@ -568,6 +617,8 @@ L1:C12: missing closing ')' | |||
568 | ^ | 617 | ^ |
569 | ]]) | 618 | ]]) |
570 | 619 | ||
620 | -- an unfortunate second error exists because we don't know | ||
621 | -- what's part of the quotation | ||
571 | testerror([[ | 622 | testerror([[ |
572 | X <- ('p / Q (R | 623 | X <- ('p / Q (R |
573 | / S)) | 624 | / S)) |
@@ -616,4 +667,35 @@ L1:C13: expected a pattern after '&' | |||
616 | ^ | 667 | ^ |
617 | ]]) | 668 | ]]) |
618 | 669 | ||
670 | -- testing non-syntax errors | ||
671 | |||
672 | testerror([[ | ||
673 | A <- %nosuch %def | ||
674 | A <- 'A again' | ||
675 | A <- 'and again' | ||
676 | ]], [[ | ||
677 | name 'nosuch' undefined | ||
678 | ]]) | ||
679 | |||
680 | testerror([[names not in grammar]], [[ | ||
681 | rule 'names' used outside a grammar | ||
682 | ]]) | ||
683 | |||
684 | testerror([[ | ||
685 | A <- %nosuch %def | ||
686 | A <- 'A again' | ||
687 | A <- 'and again' | ||
688 | ]], [[ | ||
689 | name 'nosuch' undefined | ||
690 | ]]) | ||
691 | |||
692 | -- the non-syntax error should not be reported | ||
693 | -- since there is a syntax error | ||
694 | testerror([[ A <- %nosuch ('error' ]], [[ | ||
695 | L1:C23: missing closing ')' | ||
696 | A <- %nosuch ('error' | ||
697 | ^ | ||
698 | ]]) | ||
699 | |||
700 | |||
619 | print 'OK' | 701 | print 'OK' |