use warnings; use strict; use Test::More tests => 32; BEGIN { $^H |= 0x20000; } my $t; $t = ""; eval q{ use XS::APItest (); $t .= "a"; swaptwostmts $t .= "b"; $t .= "c"; $t .= "d"; }; isnt $@, ""; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts $t .= "b"; $t .= "c"; $t .= "d"; }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts if(1) { $t .= "b"; } $t .= "c"; $t .= "d"; }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts $t .= "b"; if(1) { $t .= "c"; } $t .= "d"; }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts $t .= "b"; foreach(1..3) { $t .= "c"; swaptwostmts $t .= "d"; $t .= "e"; $t .= "f"; } $t .= "g"; }; is $@, ""; is $t, "acedfcedfcedfbg"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts $t .= "b"; $t .= "c"; }; is $@, ""; is $t, "acb"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts $t .= "b"; $t .= "c" }; is $@, ""; is $t, "acb"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts $t .= "b" }; isnt $@, ""; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $_ = $t; $_ .= "a"; swaptwostmts if(1) { $_ .= "b"; } tr/a-z/A-Z/; $_ .= "d"; $t = $_; }; is $@, ""; is $t, "Abd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); sub add_to_t { $t .= $_[0]; } add_to_t "a"; swaptwostmts if(1) { add_to_t "b"; } add_to_t "c"; add_to_t "d"; }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); { $t .= "a"; } swaptwostmts if(1) { { $t .= "b"; } } { $t .= "c"; } { $t .= "d"; } }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); no warnings "void"; { $t .= "a"; } swaptwostmts if(1) { { $t .= "b"; } } {}; { $t .= "d"; } }; is $@, ""; is $t, "abd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); no warnings "void"; { $t .= "a"; } swaptwostmts if(1) { { $t .= "b"; } } []; { $t .= "d"; } }; is $@, ""; is $t, "abd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); no warnings "void"; "@{[ $t .= 'a' ]}"; swaptwostmts if(1) { "@{[ $t .= 'b' ]}"; } "@{[ $t .= 'c' ]}"; "@{[ $t .= 'd' ]}"; }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; swaptwostmts x: $t .= "b"; z: $t .= "c"; $t .= "d"; }; is $@, ""; is $t, "acbd"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; goto x; $t .= "b"; swaptwostmts x: $t .= "c"; $t .= "d"; $t .= "e"; }; is $@, ""; is $t, "ace"; $t = ""; eval q{ use XS::APItest qw(swaptwostmts); $t .= "a"; goto x; $t .= "b"; swaptwostmts $t .= "c"; x: $t .= "d"; $t .= "e"; }; is $@, ""; is $t, "adce"; 1;