xref: /openbsd-src/gnu/usr.bin/perl/ext/XS-APItest/t/loopblock.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
1898184e3Ssthenuse warnings;
2898184e3Ssthenuse strict;
3898184e3Ssthen
4898184e3Ssthenuse Test::More tests => 14;
5898184e3Ssthen
6898184e3SsthenBEGIN { $^H |= 0x20000; }
7898184e3Ssthen
8898184e3Ssthenmy $t;
9898184e3Ssthen
10898184e3Ssthen$t = "";
11898184e3Sstheneval q{
12898184e3Ssthen	use XS::APItest qw(loopblock);
13898184e3Ssthen	do {
14898184e3Ssthen		$t .= "a";
15898184e3Ssthen		loopblock {
16898184e3Ssthen			$t .= "b";
17898184e3Ssthen			last unless length($t) < 5;
18898184e3Ssthen			$t .= "c";
19898184e3Ssthen		}
20898184e3Ssthen	};
21898184e3Ssthen	$t .= "d";
22898184e3Ssthen};
23898184e3Ssthenis $@, "";
24898184e3Ssthenis $t, "abcbcbd";
25898184e3Ssthen
26898184e3Ssthen$t = "";
27898184e3Sstheneval q{
28898184e3Ssthen	use XS::APItest qw(loopblock);
29898184e3Ssthen	$t .= "a";
30898184e3Ssthen	loopblock {
31898184e3Ssthen		$t .= "b";
32898184e3Ssthen		last unless length($t) < 5;
33898184e3Ssthen		$t .= "c";
34898184e3Ssthen	}
35898184e3Ssthen};
36898184e3Ssthenis $@, "";
37898184e3Ssthenis $t, "abcbcb";
38898184e3Ssthen
39898184e3Ssthen$t = "";
40898184e3Sstheneval q[
41898184e3Ssthen	use XS::APItest qw(loopblock);
42898184e3Ssthen	do {
43898184e3Ssthen		$t .= "a";
44898184e3Ssthen		loopblock {
45898184e3Ssthen			$t .= "b";
46898184e3Ssthen			last unless length($t) < 5;
47898184e3Ssthen			$t .= "c";
48898184e3Ssthen		}
49898184e3Ssthen];
50898184e3Ssthenisnt $@, "";
51898184e3Ssthenis $t, "";
52898184e3Ssthen
53898184e3Ssthen$t = "";
54898184e3Sstheneval q[
55898184e3Ssthen	use XS::APItest qw(loopblock);
56898184e3Ssthen	$t .= "a";
57898184e3Ssthen	loopblock {
58898184e3Ssthen		$t .= "b";
59898184e3Ssthen		last unless length($t) < 5;
60898184e3Ssthen		$t .= "c";
61898184e3Ssthen	}
62898184e3Ssthen	};
63898184e3Ssthen];
64898184e3Ssthenisnt $@, "";
65898184e3Ssthenis $t, "";
66898184e3Ssthen
67898184e3Ssthen$t = "";
68898184e3Sstheneval q{
69898184e3Ssthen	use XS::APItest qw(loopblock);
70898184e3Ssthen	my $x = "a";
71898184e3Ssthen	$t .= $x;
72898184e3Ssthen	do {
73*5759b3d2Safresh1		no warnings "shadow";
74898184e3Ssthen		$t .= $x;
75898184e3Ssthen		my $x = "b";
76898184e3Ssthen		$t .= $x;
77898184e3Ssthen		loopblock {
78898184e3Ssthen			$t .= $x;
79898184e3Ssthen			my $x = "c";
80898184e3Ssthen			$t .= $x;
81898184e3Ssthen			last unless length($t) < 7;
82898184e3Ssthen			$t .= $x;
83898184e3Ssthen			my $x = "d";
84898184e3Ssthen			$t .= $x;
85898184e3Ssthen		}
86898184e3Ssthen	};
87898184e3Ssthen	$t .= $x;
88898184e3Ssthen};
89898184e3Ssthenis $@, "";
90898184e3Ssthenis $t, "aabbccdbca";
91898184e3Ssthen
92898184e3Ssthen$t = "";
93898184e3Sstheneval q{
94898184e3Ssthen	use XS::APItest qw(loopblock);
95898184e3Ssthen	do {
96898184e3Ssthen		{ $t .= "a"; }
97898184e3Ssthen		loopblock {
98898184e3Ssthen			{ $t .= "b"; }
99898184e3Ssthen			last unless length($t) < 5;
100898184e3Ssthen			{ $t .= "c"; }
101898184e3Ssthen		}
102898184e3Ssthen	};
103898184e3Ssthen	$t .= "d";
104898184e3Ssthen};
105898184e3Ssthenis $@, "";
106898184e3Ssthenis $t, "abcbcbd";
107898184e3Ssthen
108898184e3Ssthen$t = "";
109898184e3Sstheneval q{
110898184e3Ssthen	use XS::APItest qw(loopblock);
111898184e3Ssthen	{ $t .= "a"; }
112898184e3Ssthen	loopblock {
113898184e3Ssthen		{ $t .= "b"; }
114898184e3Ssthen		last unless length($t) < 5;
115898184e3Ssthen		{ $t .= "c"; }
116898184e3Ssthen	}
117898184e3Ssthen};
118898184e3Ssthenis $@, "";
119898184e3Ssthenis $t, "abcbcb";
120898184e3Ssthen
121898184e3Ssthen1;
122