1use warnings;
2use strict;
3
4use Test::More tests => 14;
5
6BEGIN { $^H |= 0x20000; }
7
8my $t;
9
10$t = "";
11eval q{
12	use XS::APItest qw(loopblock);
13	do {
14		$t .= "a";
15		loopblock {
16			$t .= "b";
17			last unless length($t) < 5;
18			$t .= "c";
19		}
20	};
21	$t .= "d";
22};
23is $@, "";
24is $t, "abcbcbd";
25
26$t = "";
27eval q{
28	use XS::APItest qw(loopblock);
29	$t .= "a";
30	loopblock {
31		$t .= "b";
32		last unless length($t) < 5;
33		$t .= "c";
34	}
35};
36is $@, "";
37is $t, "abcbcb";
38
39$t = "";
40eval q[
41	use XS::APItest qw(loopblock);
42	do {
43		$t .= "a";
44		loopblock {
45			$t .= "b";
46			last unless length($t) < 5;
47			$t .= "c";
48		}
49];
50isnt $@, "";
51is $t, "";
52
53$t = "";
54eval q[
55	use XS::APItest qw(loopblock);
56	$t .= "a";
57	loopblock {
58		$t .= "b";
59		last unless length($t) < 5;
60		$t .= "c";
61	}
62	};
63];
64isnt $@, "";
65is $t, "";
66
67$t = "";
68eval q{
69	use XS::APItest qw(loopblock);
70	my $x = "a";
71	$t .= $x;
72	do {
73		no warnings "shadow";
74		$t .= $x;
75		my $x = "b";
76		$t .= $x;
77		loopblock {
78			$t .= $x;
79			my $x = "c";
80			$t .= $x;
81			last unless length($t) < 7;
82			$t .= $x;
83			my $x = "d";
84			$t .= $x;
85		}
86	};
87	$t .= $x;
88};
89is $@, "";
90is $t, "aabbccdbca";
91
92$t = "";
93eval q{
94	use XS::APItest qw(loopblock);
95	do {
96		{ $t .= "a"; }
97		loopblock {
98			{ $t .= "b"; }
99			last unless length($t) < 5;
100			{ $t .= "c"; }
101		}
102	};
103	$t .= "d";
104};
105is $@, "";
106is $t, "abcbcbd";
107
108$t = "";
109eval q{
110	use XS::APItest qw(loopblock);
111	{ $t .= "a"; }
112	loopblock {
113		{ $t .= "b"; }
114		last unless length($t) < 5;
115		{ $t .= "c"; }
116	}
117};
118is $@, "";
119is $t, "abcbcb";
120
1211;
122