+
+ {
+ local $@;
+ local $destroyed = 0;
+ my $desc = 'code destruction';
+
+ {
+ my $lexical;
+ my $code = sub {
+ ++$lexical;
+ is $destroyed, 0, "$desc: not yet 1";
+ };
+
+ eval {
+ sub {
+ sub {
+ &uplevel($code, UP);
+ is $destroyed, 0, "$desc: not yet 2";
+ }->();
+ is $destroyed, 0, "$desc: not yet 2";
+ }->();
+ };
+ is $@, '', "$desc: no error";
+ is $destroyed, 0, "$desc: not yet 3";
+ };
+
+ is $destroyed, 0, "$desc: code is destroyed";
+ }