Commit | Line | Data |
---|---|---|
4438c4b7 JH |
1 | Check FATAL functionality |
2 | ||
3 | __END__ | |
4 | ||
5 | # Check compile time warning | |
551cd33c | 6 | use warnings FATAL => 'syntax' ; |
4438c4b7 JH |
7 | { |
8 | no warnings ; | |
551cd33c | 9 | $a =+ 1 ; |
4438c4b7 | 10 | } |
551cd33c | 11 | $a =+ 1 ; |
4438c4b7 JH |
12 | print STDERR "The End.\n" ; |
13 | EXPECT | |
551cd33c | 14 | Reversed += operator at - line 8. |
4438c4b7 JH |
15 | ######## |
16 | ||
d5a71f30 GS |
17 | # Check compile time warning |
18 | use warnings FATAL => 'all' ; | |
19 | { | |
20 | no warnings ; | |
551cd33c | 21 | my $a =+ 1 ; |
d5a71f30 | 22 | } |
551cd33c | 23 | my $a =+ 1 ; |
d5a71f30 GS |
24 | print STDERR "The End.\n" ; |
25 | EXPECT | |
551cd33c | 26 | Reversed += operator at - line 8. |
d5a71f30 GS |
27 | ######## |
28 | ||
4438c4b7 JH |
29 | # Check runtime scope of pragma |
30 | use warnings FATAL => 'uninitialized' ; | |
31 | { | |
32 | no warnings ; | |
33 | my $b ; chop $b ; | |
34 | } | |
35 | my $b ; chop $b ; | |
36 | print STDERR "The End.\n" ; | |
37 | EXPECT | |
29489e7c | 38 | Use of uninitialized value $b in scalar chop at - line 8. |
4438c4b7 JH |
39 | ######## |
40 | ||
41 | # Check runtime scope of pragma | |
d5a71f30 GS |
42 | use warnings FATAL => 'all' ; |
43 | { | |
44 | no warnings ; | |
45 | my $b ; chop $b ; | |
46 | } | |
47 | my $b ; chop $b ; | |
48 | print STDERR "The End.\n" ; | |
49 | EXPECT | |
29489e7c | 50 | Use of uninitialized value $b in scalar chop at - line 8. |
d5a71f30 GS |
51 | ######## |
52 | ||
53 | # Check runtime scope of pragma | |
4438c4b7 JH |
54 | no warnings ; |
55 | { | |
56 | use warnings FATAL => 'uninitialized' ; | |
57 | $a = sub { my $b ; chop $b ; } | |
58 | } | |
59 | &$a ; | |
60 | print STDERR "The End.\n" ; | |
61 | EXPECT | |
29489e7c | 62 | Use of uninitialized value $b in scalar chop at - line 6. |
4438c4b7 | 63 | ######## |
d5a71f30 GS |
64 | |
65 | # Check runtime scope of pragma | |
66 | no warnings ; | |
67 | { | |
68 | use warnings FATAL => 'all' ; | |
69 | $a = sub { my $b ; chop $b ; } | |
70 | } | |
71 | &$a ; | |
72 | print STDERR "The End.\n" ; | |
73 | EXPECT | |
29489e7c | 74 | Use of uninitialized value $b in scalar chop at - line 6. |
d5a71f30 | 75 | ######## |
4438c4b7 JH |
76 | |
77 | --FILE-- abc | |
551cd33c | 78 | $a =+ 1 ; |
4438c4b7 JH |
79 | 1; |
80 | --FILE-- | |
551cd33c | 81 | use warnings FATAL => 'syntax' ; |
4438c4b7 JH |
82 | require "./abc"; |
83 | EXPECT | |
84 | ||
85 | ######## | |
86 | ||
87 | --FILE-- abc | |
551cd33c | 88 | use warnings FATAL => 'syntax' ; |
4438c4b7 JH |
89 | 1; |
90 | --FILE-- | |
91 | require "./abc"; | |
551cd33c | 92 | $a =+ 1 ; |
4438c4b7 JH |
93 | EXPECT |
94 | ||
95 | ######## | |
96 | ||
97 | --FILE-- abc | |
551cd33c JH |
98 | use warnings 'syntax' ; |
99 | $a =+ 1 ; | |
4438c4b7 JH |
100 | 1; |
101 | --FILE-- | |
102 | use warnings FATAL => 'uninitialized' ; | |
103 | require "./abc"; | |
104 | my $a ; chop $a ; | |
105 | print STDERR "The End.\n" ; | |
106 | EXPECT | |
551cd33c | 107 | Reversed += operator at ./abc line 2. |
29489e7c | 108 | Use of uninitialized value $a in scalar chop at - line 3. |
4438c4b7 JH |
109 | ######## |
110 | ||
111 | --FILE-- abc.pm | |
551cd33c JH |
112 | use warnings 'syntax' ; |
113 | $a =+ 1 ; | |
4438c4b7 JH |
114 | 1; |
115 | --FILE-- | |
116 | use warnings FATAL => 'uninitialized' ; | |
117 | use abc; | |
118 | my $a ; chop $a ; | |
119 | print STDERR "The End.\n" ; | |
120 | EXPECT | |
551cd33c | 121 | Reversed += operator at abc.pm line 2. |
29489e7c | 122 | Use of uninitialized value $a in scalar chop at - line 3. |
4438c4b7 JH |
123 | ######## |
124 | ||
125 | # Check scope of pragma with eval | |
126 | no warnings ; | |
127 | eval { | |
128 | use warnings FATAL => 'uninitialized' ; | |
129 | my $b ; chop $b ; | |
130 | }; print STDERR "-- $@" ; | |
131 | my $b ; chop $b ; | |
132 | print STDERR "The End.\n" ; | |
133 | EXPECT | |
29489e7c | 134 | -- Use of uninitialized value $b in scalar chop at - line 6. |
4438c4b7 JH |
135 | The End. |
136 | ######## | |
137 | ||
138 | # Check scope of pragma with eval | |
139 | use warnings FATAL => 'uninitialized' ; | |
140 | eval { | |
141 | my $b ; chop $b ; | |
142 | }; print STDERR "-- $@" ; | |
143 | my $b ; chop $b ; | |
144 | print STDERR "The End.\n" ; | |
145 | EXPECT | |
29489e7c DM |
146 | -- Use of uninitialized value $b in scalar chop at - line 5. |
147 | Use of uninitialized value $b in scalar chop at - line 7. | |
4438c4b7 JH |
148 | ######## |
149 | ||
150 | # Check scope of pragma with eval | |
151 | use warnings FATAL => 'uninitialized' ; | |
152 | eval { | |
153 | no warnings ; | |
154 | my $b ; chop $b ; | |
155 | }; print STDERR $@ ; | |
156 | my $b ; chop $b ; | |
157 | print STDERR "The End.\n" ; | |
158 | EXPECT | |
29489e7c | 159 | Use of uninitialized value $b in scalar chop at - line 8. |
4438c4b7 JH |
160 | ######## |
161 | ||
162 | # Check scope of pragma with eval | |
163 | no warnings ; | |
164 | eval { | |
551cd33c JH |
165 | use warnings FATAL => 'syntax' ; |
166 | $a =+ 1 ; | |
4438c4b7 | 167 | }; print STDERR "-- $@" ; |
551cd33c | 168 | $a =+ 1 ; |
4438c4b7 JH |
169 | print STDERR "The End.\n" ; |
170 | EXPECT | |
551cd33c | 171 | Reversed += operator at - line 6. |
4438c4b7 JH |
172 | ######## |
173 | ||
174 | # Check scope of pragma with eval | |
551cd33c | 175 | use warnings FATAL => 'syntax' ; |
4438c4b7 | 176 | eval { |
551cd33c | 177 | $a =+ 1 ; |
4438c4b7 | 178 | }; print STDERR "-- $@" ; |
551cd33c | 179 | $a =+ 1 ; |
4438c4b7 JH |
180 | print STDERR "The End.\n" ; |
181 | EXPECT | |
551cd33c | 182 | Reversed += operator at - line 5. |
4438c4b7 JH |
183 | ######## |
184 | ||
185 | # Check scope of pragma with eval | |
551cd33c | 186 | use warnings FATAL => 'syntax' ; |
4438c4b7 JH |
187 | eval { |
188 | no warnings ; | |
551cd33c | 189 | $a =+ 1 ; |
4438c4b7 | 190 | }; print STDERR $@ ; |
551cd33c | 191 | $a =+ 1 ; |
4438c4b7 JH |
192 | print STDERR "The End.\n" ; |
193 | EXPECT | |
551cd33c | 194 | Reversed += operator at - line 8. |
4438c4b7 JH |
195 | ######## |
196 | ||
197 | # Check scope of pragma with eval | |
198 | no warnings ; | |
199 | eval { | |
551cd33c | 200 | use warnings FATAL => 'syntax' ; |
4438c4b7 | 201 | }; print STDERR $@ ; |
551cd33c | 202 | $a =+ 1 ; |
4438c4b7 JH |
203 | print STDERR "The End.\n" ; |
204 | EXPECT | |
205 | The End. | |
206 | ######## | |
207 | ||
208 | # Check scope of pragma with eval | |
209 | no warnings ; | |
210 | eval q[ | |
211 | use warnings FATAL => 'uninitialized' ; | |
212 | my $b ; chop $b ; | |
213 | ]; print STDERR "-- $@"; | |
214 | my $b ; chop $b ; | |
215 | print STDERR "The End.\n" ; | |
216 | EXPECT | |
29489e7c | 217 | -- Use of uninitialized value $b in scalar chop at (eval 1) line 3. |
4438c4b7 JH |
218 | The End. |
219 | ######## | |
220 | ||
221 | # Check scope of pragma with eval | |
222 | use warnings FATAL => 'uninitialized' ; | |
223 | eval ' | |
224 | my $b ; chop $b ; | |
225 | '; print STDERR "-- $@" ; | |
226 | my $b ; chop $b ; | |
227 | print STDERR "The End.\n" ; | |
228 | EXPECT | |
29489e7c DM |
229 | -- Use of uninitialized value $b in scalar chop at (eval 1) line 2. |
230 | Use of uninitialized value $b in scalar chop at - line 7. | |
4438c4b7 JH |
231 | ######## |
232 | ||
233 | # Check scope of pragma with eval | |
234 | use warnings FATAL => 'uninitialized' ; | |
235 | eval ' | |
236 | no warnings ; | |
237 | my $b ; chop $b ; | |
238 | '; print STDERR $@ ; | |
239 | my $b ; chop $b ; | |
240 | print STDERR "The End.\n" ; | |
241 | EXPECT | |
29489e7c | 242 | Use of uninitialized value $b in scalar chop at - line 8. |
4438c4b7 JH |
243 | ######## |
244 | ||
245 | # Check scope of pragma with eval | |
246 | no warnings ; | |
247 | eval q[ | |
551cd33c JH |
248 | use warnings FATAL => 'syntax' ; |
249 | $a =+ 1 ; | |
4438c4b7 | 250 | ]; print STDERR "-- $@"; |
551cd33c | 251 | $a =+ 1 ; |
4438c4b7 JH |
252 | print STDERR "The End.\n" ; |
253 | EXPECT | |
551cd33c | 254 | -- Reversed += operator at (eval 1) line 3. |
4438c4b7 JH |
255 | The End. |
256 | ######## | |
257 | ||
258 | # Check scope of pragma with eval | |
551cd33c | 259 | use warnings FATAL => 'syntax' ; |
4438c4b7 | 260 | eval ' |
551cd33c | 261 | $a =+ 1 ; |
4438c4b7 JH |
262 | '; print STDERR "-- $@"; |
263 | print STDERR "The End.\n" ; | |
264 | EXPECT | |
551cd33c | 265 | -- Reversed += operator at (eval 1) line 2. |
4438c4b7 JH |
266 | The End. |
267 | ######## | |
268 | ||
269 | # Check scope of pragma with eval | |
551cd33c | 270 | use warnings FATAL => 'syntax' ; |
4438c4b7 JH |
271 | eval ' |
272 | no warnings ; | |
551cd33c | 273 | $a =+ 1 ; |
4438c4b7 | 274 | '; print STDERR "-- $@"; |
551cd33c | 275 | $a =+ 1 ; |
4438c4b7 JH |
276 | print STDERR "The End.\n" ; |
277 | EXPECT | |
551cd33c | 278 | Reversed += operator at - line 8. |
f1f33818 | 279 | ######## |
2bd168e2 | 280 | # TODO ? !$Config{usethreads} && $::UTF8 && ($ENV{PERL_DESTRUCT_LEVEL} || 0) > 1 ? "Parser leaks OPs, which leak shared hash keys" : '' |
dfba4714 | 281 | # SKIP ? $Config{ccflags} =~ /sanitize/ |
f1f33818 PM |
282 | |
283 | use warnings 'void' ; | |
284 | ||
285 | time ; | |
286 | ||
287 | { | |
288 | use warnings FATAL => qw(void) ; | |
1518d620 NC |
289 | $a = "abc"; |
290 | length $a ; | |
f1f33818 PM |
291 | } |
292 | ||
293 | join "", 1,2,3 ; | |
294 | ||
295 | print "done\n" ; | |
296 | EXPECT | |
297 | Useless use of time in void context at - line 4. | |
1518d620 | 298 | Useless use of length in void context at - line 9. |
f1f33818 | 299 | ######## |
2bd168e2 | 300 | # TODO ? !$Config{usethreads} && $::UTF8 && ($ENV{PERL_DESTRUCT_LEVEL} || 0) > 1 ? "Parser leaks OPs, which leak shared hash keys" : '' |
dfba4714 | 301 | # SKIP ? $Config{ccflags} =~ /sanitize/ |
f1f33818 PM |
302 | |
303 | use warnings ; | |
304 | ||
305 | time ; | |
306 | ||
307 | { | |
308 | use warnings FATAL => qw(void) ; | |
1518d620 NC |
309 | $a = "abc"; |
310 | length $a ; | |
f1f33818 PM |
311 | } |
312 | ||
313 | join "", 1,2,3 ; | |
314 | ||
315 | print "done\n" ; | |
316 | EXPECT | |
317 | Useless use of time in void context at - line 4. | |
1518d620 | 318 | Useless use of length in void context at - line 9. |
08540116 PM |
319 | ######## |
320 | ||
321 | use warnings FATAL => 'all'; | |
322 | { | |
323 | no warnings; | |
324 | my $b ; chop $b; | |
325 | { | |
326 | use warnings ; | |
327 | my $b ; chop $b; | |
328 | } | |
329 | } | |
330 | my $b ; chop $b; | |
331 | print STDERR "The End.\n" ; | |
332 | EXPECT | |
29489e7c DM |
333 | Use of uninitialized value $b in scalar chop at - line 8. |
334 | Use of uninitialized value $b in scalar chop at - line 11. | |
08540116 PM |
335 | ######## |
336 | ||
337 | use warnings FATAL => 'all'; | |
338 | { | |
339 | no warnings FATAL => 'all'; | |
340 | my $b ; chop $b; | |
341 | { | |
342 | use warnings ; | |
343 | my $b ; chop $b; | |
344 | } | |
345 | } | |
346 | my $b ; chop $b; | |
347 | print STDERR "The End.\n" ; | |
348 | EXPECT | |
29489e7c DM |
349 | Use of uninitialized value $b in scalar chop at - line 8. |
350 | Use of uninitialized value $b in scalar chop at - line 11. | |
08540116 PM |
351 | ######## |
352 | ||
353 | use warnings FATAL => 'all'; | |
354 | { | |
355 | no warnings 'syntax'; | |
356 | { | |
357 | use warnings ; | |
358 | my $b ; chop $b; | |
359 | } | |
360 | } | |
361 | my $b ; chop $b; | |
362 | print STDERR "The End.\n" ; | |
363 | EXPECT | |
29489e7c | 364 | Use of uninitialized value $b in scalar chop at - line 7. |
6e9af7e4 PM |
365 | ######## |
366 | ||
367 | use warnings FATAL => 'syntax', NONFATAL => 'void' ; | |
368 | ||
1518d620 NC |
369 | $a = "abc"; |
370 | length $a; | |
6e9af7e4 PM |
371 | print STDERR "The End.\n" ; |
372 | EXPECT | |
1518d620 | 373 | Useless use of length in void context at - line 5. |
6e9af7e4 PM |
374 | The End. |
375 | ######## | |
376 | ||
377 | use warnings FATAL => 'all', NONFATAL => 'void' ; | |
378 | ||
1518d620 NC |
379 | $a = "abc"; |
380 | length $a; | |
6e9af7e4 PM |
381 | print STDERR "The End.\n" ; |
382 | EXPECT | |
1518d620 | 383 | Useless use of length in void context at - line 5. |
6e9af7e4 PM |
384 | The End. |
385 | ######## | |
386 | ||
387 | use warnings FATAL => 'all', NONFATAL => 'void' ; | |
388 | ||
389 | my $a ; chomp $a; | |
1518d620 NC |
390 | |
391 | $b = "abc" ; | |
392 | length $b; | |
6e9af7e4 PM |
393 | print STDERR "The End.\n" ; |
394 | EXPECT | |
1518d620 | 395 | Useless use of length in void context at - line 7. |
29489e7c | 396 | Use of uninitialized value $a in scalar chomp at - line 4. |
6e9af7e4 PM |
397 | ######## |
398 | ||
399 | use warnings FATAL => 'void', NONFATAL => 'void' ; | |
1518d620 NC |
400 | $a = "abc"; |
401 | length $a; | |
6e9af7e4 PM |
402 | print STDERR "The End.\n" ; |
403 | EXPECT | |
404 | Useless use of length in void context at - line 4. | |
405 | The End. | |
406 | ######## | |
2bd168e2 | 407 | # TODO ? !$Config{usethreads} && $::UTF8 && ($ENV{PERL_DESTRUCT_LEVEL} || 0) > 1 ? "Parser leaks OPs, which leak shared hash keys" : '' |
6e9af7e4 PM |
408 | |
409 | use warnings NONFATAL => 'void', FATAL => 'void' ; | |
1518d620 NC |
410 | $a = "abc"; |
411 | length $a; | |
6e9af7e4 PM |
412 | print STDERR "The End.\n" ; |
413 | EXPECT | |
414 | Useless use of length in void context at - line 4. | |
415 | ######## | |
416 | ||
417 | use warnings FATAL => 'all', NONFATAL => 'io'; | |
418 | no warnings 'once'; | |
419 | ||
420 | open(F, "<true\ncd"); | |
7cb3f959 TC |
421 | open(G, "<truecd\n"); |
422 | open(H, "<truecd\n\0"); | |
6e9af7e4 PM |
423 | close "fred" ; |
424 | print STDERR "The End.\n" ; | |
425 | EXPECT | |
7cb3f959 TC |
426 | Unsuccessful open on filename containing newline at - line 6. |
427 | Unsuccessful open on filename containing newline at - line 7. | |
428 | close() on unopened filehandle fred at - line 8. | |
6e9af7e4 PM |
429 | The End. |
430 | ######## | |
431 | ||
432 | use warnings FATAL => 'all', NONFATAL => 'io', FATAL => 'unopened' ; | |
433 | no warnings 'once'; | |
434 | ||
7cb3f959 | 435 | open(F, "<truecd\n"); |
6e9af7e4 PM |
436 | close "fred" ; |
437 | print STDERR "The End.\n" ; | |
438 | EXPECT | |
439 | Unsuccessful open on filename containing newline at - line 5. | |
440 | close() on unopened filehandle fred at - line 6. | |
c91312d5 H |
441 | ######## |
442 | ||
443 | # 'use warnings' test as the basis for the following tests | |
444 | use warnings ; | |
445 | my $a = oct "7777777777777777777777777777777777778" ; | |
446 | my $b =+ 1 ; | |
447 | my $c ; chop $c ; | |
448 | print STDERR "The End.\n" ; | |
449 | EXPECT | |
450 | Reversed += operator at - line 5. | |
451 | Integer overflow in octal number at - line 4. | |
452 | Illegal octal digit '8' ignored at - line 4. | |
453 | Octal number > 037777777777 non-portable at - line 4. | |
454 | Use of uninitialized value $c in scalar chop at - line 6. | |
455 | The End. | |
456 | ######## | |
457 | ||
458 | # 'use warnings NONFATAL=>"all"' should be the same as 'use warnings' | |
459 | use warnings NONFATAL=>"all" ; | |
460 | my $a = oct "7777777777777777777777777777777777778" ; | |
461 | my $b =+ 1 ; | |
462 | my $c ; chop $c ; | |
463 | print STDERR "The End.\n" ; | |
464 | EXPECT | |
465 | Reversed += operator at - line 5. | |
466 | Integer overflow in octal number at - line 4. | |
467 | Illegal octal digit '8' ignored at - line 4. | |
468 | Octal number > 037777777777 non-portable at - line 4. | |
469 | Use of uninitialized value $c in scalar chop at - line 6. | |
470 | The End. | |
471 | ######## | |
472 | ||
473 | # 'use warnings "NONFATAL"' should be the same as 'use warnings' [perl #120977] | |
474 | use warnings "NONFATAL" ; | |
475 | my $a = oct "7777777777777777777777777777777777778" ; | |
476 | my $b =+ 1 ; | |
477 | my $c ; chop $c ; | |
478 | print STDERR "The End.\n" ; | |
479 | EXPECT | |
480 | Reversed += operator at - line 5. | |
481 | Integer overflow in octal number at - line 4. | |
482 | Illegal octal digit '8' ignored at - line 4. | |
483 | Octal number > 037777777777 non-portable at - line 4. | |
484 | Use of uninitialized value $c in scalar chop at - line 6. | |
485 | The End. | |
486 | ######## | |
487 | ||
488 | # 'use warnings "FATAL"' should be the same as 'use warnings FATAL=>"all"' [perl #120977] | |
489 | use warnings "FATAL" ; | |
490 | { | |
491 | no warnings ; | |
492 | my $a =+ 1 ; | |
493 | } | |
494 | my $a =+ 1 ; | |
495 | print STDERR "The End.\n" ; | |
496 | EXPECT | |
497 | Reversed += operator at - line 8. | |
498 | ######## | |
499 | ||
500 | # 'use warnings "FATAL"' should be the same as 'use warnings FATAL=>"all"' [perl #120977] | |
501 | use warnings "FATAL" ; | |
502 | { | |
503 | no warnings ; | |
504 | my $a = oct "7777777777777777777777777777777777778" ; | |
505 | } | |
506 | my $a = oct "7777777777777777777777777777777777778" ; | |
507 | print STDERR "The End.\n" ; | |
508 | EXPECT | |
509 | Integer overflow in octal number at - line 8. | |
510 | ######## | |
511 | ||
512 | # 'no warnings FATAL=>"all"' should be the same as 'no warnings' | |
513 | use warnings ; | |
514 | { | |
515 | no warnings FATAL=>"all" ; | |
516 | my $a = oct "7777777777777777777777777777777777778" ; | |
517 | my $b =+ 1 ; | |
518 | my $c ; chop $c ; | |
519 | } | |
520 | my $a =+ 1 ; | |
521 | print STDERR "The End.\n" ; | |
522 | EXPECT | |
523 | Reversed += operator at - line 10. | |
524 | The End. | |
525 | ######## | |
526 | ||
527 | # 'no warnings "FATAL"' should be the same as 'no warnings' [perl #120977] | |
528 | use warnings ; | |
529 | { | |
530 | no warnings "FATAL" ; | |
531 | my $a = oct "7777777777777777777777777777777777778" ; | |
532 | my $b =+ 1 ; | |
533 | my $c ; chop $c ; | |
534 | } | |
535 | my $a =+ 1 ; | |
536 | print STDERR "The End.\n" ; | |
537 | EXPECT | |
538 | Reversed += operator at - line 10. | |
539 | The End. | |
594b6fac LM |
540 | ######## |
541 | ||
542 | # fatal warnings shouldn't hide parse errors [perl #122966] | |
543 | use warnings FATAL => 'all'; | |
544 | if (1 { | |
545 | my $x = "hello"; | |
546 | print $x, "\n"; | |
547 | } | |
548 | EXPECT | |
549 | syntax error at - line 4, near "1 {" | |
550 | "my" variable $x masks earlier declaration in same statement at - line 6. | |
551 | syntax error at - line 7, near "}" | |
552 | Execution of - aborted due to compilation errors. | |
4221d7c5 RU |
553 | ######## |
554 | ||
555 | # fatal warnings in DESTROY should be made non-fatal [perl #123398] | |
556 | # This test will blow up your memory with SEGV without the patch | |
557 | package Foo; | |
558 | use strict; use utf8; use warnings FATAL => 'all'; | |
559 | sub new { | |
560 | return bless{ 'field' => undef }, 'Foo'; | |
561 | } | |
562 | sub DESTROY { | |
563 | my $self = shift; | |
564 | $self->{'field'}->missing_method; | |
565 | } | |
566 | package main; | |
567 | my $foo = new Foo; | |
568 | undef($foo); | |
569 | EXPECT | |
570 | (in cleanup) Can't call method "missing_method" on an undefined value at - line 11. |