Scope-Escape

 view release on metacpan or  search on metacpan

t/eval_barrier.t  view on Meta::CPAN

					$cont)];
			$cont->("c2a", "c2b");
		};
		push @events, ["c3", [@value]];
		("c4a", "c4b");
	}->();
	push @events, ["b1", [@value]];
	("b2a", "b2b");
};
push @events, ["a1", [@value], $@];
is_deeply \@events, [
	["a0"],
	["b0"],
	["c0"],
	["c1"],
	["c2", !!1],
	["b1", ["c2a", "c2b"]],
	["a1", ["b2a", "b2b"], ""],
];

$cont = undef; @events = ();
push @events, ["a0"];
@value = eval {
	push @events, ["b0"];
	@value = sub {
		push @events, ["c0"];
		$cont = current_escape_function;
		push @events, ["c1"];
		@value = eval {
			push @events, ["c2",
				Scope::Escape::Continuation::is_accessible(
					$cont)];
			$cont->("c2a", "c2b");
		};
		push @events, ["c3", [@value], $@];
		("c4a", "c4b");
	}->();
	push @events, ["b1", [@value]];
	("b2a", "b2b");
};
push @events, ["a1", [@value], $@];
is_deeply \@events, [
	["a0"],
	["b0"],
	["c0"],
	["c1"],
	["c2", !!0],
	["c3", [], "attempt to transfer past impervious stack frame\n"],
	["b1", ["c4a", "c4b"]],
	["a1", ["b2a", "b2b"], ""],
];

$cont = undef; @events = ();
push @events, ["a0"];
@value = eval {
	push @events, ["b0"];
	@value = sub {
		push @events, ["c0"];
		$cont = current_escape_function;
		push @events, ["c1"];
		@value = require("t/eval_barrier_req.pl");
		push @events, ["c3", [@value]];
		("c4a", "c4b");
	}->();
	push @events, ["b1", [@value]];
	("b2a", "b2b");
};
push @events, ["a1", [@value], $@];
is_deeply \@events, [
	["a0"],
	["b0"],
	["c0"],
	["c1"],
	["c2", !!0],
	["a1", [], "attempt to transfer past impervious stack frame\n".
			"Compilation failed in require\n"],
];

1;



( run in 1.896 second using v1.01-cache-2.11-cpan-5837b0d9d2c )