89dc1cb6d7be9f63285094e58d4b94b3b22ef4b7
[p5sagit/Devel-Declare.git] / t / early1_x.pm
1 package t::early1_x;
2 use strict;
3 use warnings;
4 sub import {
5     require Devel::Declare;
6     my $caller = caller();
7     Devel::Declare->setup_for($caller, {
8         class => {
9             const => sub {
10                 my ($kw, $off) = @_;
11                 $off += Devel::Declare::toke_move_past_token($off);
12                 $off += Devel::Declare::toke_skipspace($off);
13                 die unless substr(Devel::Declare::get_linestr(), $off, 1) eq '{';
14                 my $l = Devel::Declare::get_linestr();
15                 substr $l, $off + 1, 0, 'pass q[injected];' . (';' x 1000);
16                 Devel::Declare::set_linestr($l);
17                 my $class = sub (&) { $_[0]->() };
18                 no strict 'refs';
19                 *{ "${caller}::$kw" } = $class;
20             },
21         },
22     });
23 }
24
25 1;