X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fpragma%2Fwarn%2Fpp_ctl;h=5e0dd2766c61737d96e346ac7934151bfb1d06f3;hb=4438c4b75b842b6c829a7da9841e97abb875b1d8;hp=5a1c2338ed1991a52c5cef2577fce88783f246c8;hpb=b5d92ff461a53c003570dfb3f7104a54ab2cc3d8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/pragma/warn/pp_ctl b/t/pragma/warn/pp_ctl index 5a1c233..5e0dd27 100644 --- a/t/pragma/warn/pp_ctl +++ b/t/pragma/warn/pp_ctl @@ -60,7 +60,7 @@ __END__ # pp_ctl.c -use warning 'syntax' ; +use warnings 'syntax' ; format STDOUT = @<<< @<<< 1 @@ -71,73 +71,111 @@ Not enough format arguments at - line 5. 1 ######## # pp_ctl.c -use warning 'unsafe' ; +no warnings 'syntax' ; +format = +@<<< @<<< +1 +. +write ; +EXPECT +1 +######## +# pp_ctl.c +use warnings 'unsafe' ; $_ = "abc" ; while ($i ++ == 0) { s/ab/last/e ; } +no warnings 'unsafe' ; +while ($i ++ == 0) +{ + s/ab/last/e ; +} EXPECT Exiting substitution via last at - line 7. ######## # pp_ctl.c -use warning 'unsafe' ; +use warnings 'unsafe' ; sub fred { last } { fred() } +no warnings 'unsafe' ; +sub joe { last } +{ joe() } EXPECT Exiting subroutine via last at - line 3. ######## # pp_ctl.c -use warning 'unsafe' ; -{ eval "last;" } +{ + eval "use warnings 'unsafe' ; last;" +} +print STDERR $@ ; +{ + eval "no warnings 'unsafe' ;last;" +} print STDERR $@ ; EXPECT Exiting eval via last at (eval 1) line 1. ######## # pp_ctl.c -use warning 'unsafe' ; +use warnings 'unsafe' ; @a = (1,2) ; @b = sort { last } @a ; +no warnings 'unsafe' ; +@b = sort { last } @a ; EXPECT Exiting pseudo-block via last at - line 4. Can't "last" outside a block at - line 4. ######## # pp_ctl.c -use warning 'unsafe' ; +use warnings 'unsafe' ; $_ = "abc" ; fred: while ($i ++ == 0) { s/ab/last fred/e ; } +no warnings 'unsafe' ; +while ($i ++ == 0) +{ + s/ab/last fred/e ; +} EXPECT Exiting substitution via last at - line 7. ######## # pp_ctl.c -use warning 'unsafe' ; +use warnings 'unsafe' ; sub fred { last joe } joe: { fred() } +no warnings 'unsafe' ; +sub Fred { last Joe } +Joe: { Fred() } EXPECT Exiting subroutine via last at - line 3. ######## # pp_ctl.c -use warning 'unsafe' ; -joe: { eval "last joe;" } +joe: +{ eval "use warnings 'unsafe' ; last joe;" } +print STDERR $@ ; +Joe: +{ eval "no warnings 'unsafe' ; last Joe;" } print STDERR $@ ; EXPECT Exiting eval via last at (eval 1) line 1. ######## # pp_ctl.c -use warning 'unsafe' ; +use warnings 'unsafe' ; @a = (1,2) ; fred: @b = sort { last fred } @a ; +no warnings 'unsafe' ; +Fred: @b = sort { last Fred } @a ; EXPECT Exiting pseudo-block via last at - line 4. Label not found for "last fred" at - line 4. ######## # pp_ctl.c -use warning 'recursion' ; +use warnings 'recursion' ; BEGIN { warn "PREFIX\n" ;} sub fred { @@ -149,7 +187,19 @@ EXPECT Deep recursion on subroutine "main::fred" at - line 6. ######## # pp_ctl.c -use warning 'unsafe' ; +no warnings 'recursion' ; +BEGIN { warn "PREFIX\n" ;} +sub fred +{ + goto &fred() if $a++ < 200 +} + +goto &fred() +EXPECT +Can't find label +######## +# pp_ctl.c +use warnings 'unsafe' ; package Foo; DESTROY { die "@{$_[0]} foo bar" } { bless ['A'], 'Foo' for 1..10 } @@ -157,3 +207,12 @@ DESTROY { die "@{$_[0]} foo bar" } EXPECT (in cleanup) A foo bar at - line 4. (in cleanup) B foo bar at - line 4. +######## +# pp_ctl.c +no warnings 'unsafe' ; +package Foo; +DESTROY { die "@{$_[0]} foo bar" } +{ bless ['A'], 'Foo' for 1..10 } +{ bless ['B'], 'Foo' for 1..10 } +EXPECT +