1*898184e3Ssthenuse warnings;
2*898184e3Ssthenuse strict;
3*898184e3Ssthen
4*898184e3Ssthenuse Test::More tests => 32;
5*898184e3Ssthen
6*898184e3SsthenBEGIN { $^H |= 0x20000; }
7*898184e3Ssthen
8*898184e3Ssthenmy $t;
9*898184e3Ssthen
10*898184e3Ssthen$t = "";
11*898184e3Sstheneval q{
12*898184e3Ssthen	use XS::APItest ();
13*898184e3Ssthen	$t .= "a";
14*898184e3Ssthen	swaptwostmts
15*898184e3Ssthen	$t .= "b";
16*898184e3Ssthen	$t .= "c";
17*898184e3Ssthen	$t .= "d";
18*898184e3Ssthen};
19*898184e3Ssthenisnt $@, "";
20*898184e3Ssthen
21*898184e3Ssthen$t = "";
22*898184e3Sstheneval q{
23*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
24*898184e3Ssthen	$t .= "a";
25*898184e3Ssthen	swaptwostmts
26*898184e3Ssthen	$t .= "b";
27*898184e3Ssthen	$t .= "c";
28*898184e3Ssthen	$t .= "d";
29*898184e3Ssthen};
30*898184e3Ssthenis $@, "";
31*898184e3Ssthenis $t, "acbd";
32*898184e3Ssthen
33*898184e3Ssthen$t = "";
34*898184e3Sstheneval q{
35*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
36*898184e3Ssthen	$t .= "a";
37*898184e3Ssthen	swaptwostmts
38*898184e3Ssthen	if(1) { $t .= "b"; }
39*898184e3Ssthen	$t .= "c";
40*898184e3Ssthen	$t .= "d";
41*898184e3Ssthen};
42*898184e3Ssthenis $@, "";
43*898184e3Ssthenis $t, "acbd";
44*898184e3Ssthen
45*898184e3Ssthen$t = "";
46*898184e3Sstheneval q{
47*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
48*898184e3Ssthen	$t .= "a";
49*898184e3Ssthen	swaptwostmts
50*898184e3Ssthen	$t .= "b";
51*898184e3Ssthen	if(1) { $t .= "c"; }
52*898184e3Ssthen	$t .= "d";
53*898184e3Ssthen};
54*898184e3Ssthenis $@, "";
55*898184e3Ssthenis $t, "acbd";
56*898184e3Ssthen
57*898184e3Ssthen$t = "";
58*898184e3Sstheneval q{
59*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
60*898184e3Ssthen	$t .= "a";
61*898184e3Ssthen	swaptwostmts
62*898184e3Ssthen	$t .= "b";
63*898184e3Ssthen	foreach(1..3) {
64*898184e3Ssthen		$t .= "c";
65*898184e3Ssthen		swaptwostmts
66*898184e3Ssthen		$t .= "d";
67*898184e3Ssthen		$t .= "e";
68*898184e3Ssthen		$t .= "f";
69*898184e3Ssthen	}
70*898184e3Ssthen	$t .= "g";
71*898184e3Ssthen};
72*898184e3Ssthenis $@, "";
73*898184e3Ssthenis $t, "acedfcedfcedfbg";
74*898184e3Ssthen
75*898184e3Ssthen$t = "";
76*898184e3Sstheneval q{
77*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
78*898184e3Ssthen	$t .= "a";
79*898184e3Ssthen	swaptwostmts
80*898184e3Ssthen	$t .= "b";
81*898184e3Ssthen	$t .= "c";
82*898184e3Ssthen};
83*898184e3Ssthenis $@, "";
84*898184e3Ssthenis $t, "acb";
85*898184e3Ssthen
86*898184e3Ssthen$t = "";
87*898184e3Sstheneval q{
88*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
89*898184e3Ssthen	$t .= "a";
90*898184e3Ssthen	swaptwostmts
91*898184e3Ssthen	$t .= "b";
92*898184e3Ssthen	$t .= "c"
93*898184e3Ssthen};
94*898184e3Ssthenis $@, "";
95*898184e3Ssthenis $t, "acb";
96*898184e3Ssthen
97*898184e3Ssthen$t = "";
98*898184e3Sstheneval q{
99*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
100*898184e3Ssthen	$t .= "a";
101*898184e3Ssthen	swaptwostmts
102*898184e3Ssthen	$t .= "b"
103*898184e3Ssthen};
104*898184e3Ssthenisnt $@, "";
105*898184e3Ssthen
106*898184e3Ssthen$t = "";
107*898184e3Sstheneval q{
108*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
109*898184e3Ssthen	$_ = $t;
110*898184e3Ssthen	$_ .= "a";
111*898184e3Ssthen	swaptwostmts
112*898184e3Ssthen	if(1) { $_ .= "b"; }
113*898184e3Ssthen	tr/a-z/A-Z/;
114*898184e3Ssthen	$_ .= "d";
115*898184e3Ssthen	$t = $_;
116*898184e3Ssthen};
117*898184e3Ssthenis $@, "";
118*898184e3Ssthenis $t, "Abd";
119*898184e3Ssthen
120*898184e3Ssthen$t = "";
121*898184e3Sstheneval q{
122*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
123*898184e3Ssthen	sub add_to_t { $t .= $_[0]; }
124*898184e3Ssthen	add_to_t "a";
125*898184e3Ssthen	swaptwostmts
126*898184e3Ssthen	if(1) { add_to_t "b"; }
127*898184e3Ssthen	add_to_t "c";
128*898184e3Ssthen	add_to_t "d";
129*898184e3Ssthen};
130*898184e3Ssthenis $@, "";
131*898184e3Ssthenis $t, "acbd";
132*898184e3Ssthen
133*898184e3Ssthen$t = "";
134*898184e3Sstheneval q{
135*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
136*898184e3Ssthen	{ $t .= "a"; }
137*898184e3Ssthen	swaptwostmts
138*898184e3Ssthen	if(1) { { $t .= "b"; } }
139*898184e3Ssthen	{ $t .= "c"; }
140*898184e3Ssthen	{ $t .= "d"; }
141*898184e3Ssthen};
142*898184e3Ssthenis $@, "";
143*898184e3Ssthenis $t, "acbd";
144*898184e3Ssthen
145*898184e3Ssthen$t = "";
146*898184e3Sstheneval q{
147*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
148*898184e3Ssthen	no warnings "void";
149*898184e3Ssthen	{ $t .= "a"; }
150*898184e3Ssthen	swaptwostmts
151*898184e3Ssthen	if(1) { { $t .= "b"; } }
152*898184e3Ssthen	{};
153*898184e3Ssthen	{ $t .= "d"; }
154*898184e3Ssthen};
155*898184e3Ssthenis $@, "";
156*898184e3Ssthenis $t, "abd";
157*898184e3Ssthen
158*898184e3Ssthen$t = "";
159*898184e3Sstheneval q{
160*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
161*898184e3Ssthen	no warnings "void";
162*898184e3Ssthen	{ $t .= "a"; }
163*898184e3Ssthen	swaptwostmts
164*898184e3Ssthen	if(1) { { $t .= "b"; } }
165*898184e3Ssthen	[];
166*898184e3Ssthen	{ $t .= "d"; }
167*898184e3Ssthen};
168*898184e3Ssthenis $@, "";
169*898184e3Ssthenis $t, "abd";
170*898184e3Ssthen
171*898184e3Ssthen$t = "";
172*898184e3Sstheneval q{
173*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
174*898184e3Ssthen	no warnings "void";
175*898184e3Ssthen	"@{[ $t .= 'a' ]}";
176*898184e3Ssthen	swaptwostmts
177*898184e3Ssthen	if(1) { "@{[ $t .= 'b' ]}"; }
178*898184e3Ssthen	"@{[ $t .= 'c' ]}";
179*898184e3Ssthen	"@{[ $t .= 'd' ]}";
180*898184e3Ssthen};
181*898184e3Ssthenis $@, "";
182*898184e3Ssthenis $t, "acbd";
183*898184e3Ssthen
184*898184e3Ssthen$t = "";
185*898184e3Sstheneval q{
186*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
187*898184e3Ssthen	$t .= "a";
188*898184e3Ssthen	swaptwostmts
189*898184e3Ssthen	x:
190*898184e3Ssthen	$t .= "b";
191*898184e3Ssthen	z:
192*898184e3Ssthen	$t .= "c";
193*898184e3Ssthen	$t .= "d";
194*898184e3Ssthen};
195*898184e3Ssthenis $@, "";
196*898184e3Ssthenis $t, "acbd";
197*898184e3Ssthen
198*898184e3Ssthen$t = "";
199*898184e3Sstheneval q{
200*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
201*898184e3Ssthen	$t .= "a";
202*898184e3Ssthen	goto x;
203*898184e3Ssthen	$t .= "b";
204*898184e3Ssthen	swaptwostmts
205*898184e3Ssthen	x:
206*898184e3Ssthen	$t .= "c";
207*898184e3Ssthen	$t .= "d";
208*898184e3Ssthen	$t .= "e";
209*898184e3Ssthen};
210*898184e3Ssthenis $@, "";
211*898184e3Ssthenis $t, "ace";
212*898184e3Ssthen
213*898184e3Ssthen$t = "";
214*898184e3Sstheneval q{
215*898184e3Ssthen	use XS::APItest qw(swaptwostmts);
216*898184e3Ssthen	$t .= "a";
217*898184e3Ssthen	goto x;
218*898184e3Ssthen	$t .= "b";
219*898184e3Ssthen	swaptwostmts
220*898184e3Ssthen	$t .= "c";
221*898184e3Ssthen	x:
222*898184e3Ssthen	$t .= "d";
223*898184e3Ssthen	$t .= "e";
224*898184e3Ssthen};
225*898184e3Ssthenis $@, "";
226*898184e3Ssthenis $t, "adce";
227*898184e3Ssthen
228*898184e3Ssthen1;
229