2 use Test::More qw(no_plan);
9 use B::Hooks::EndOfScope;
11 our ($Declarator, $Offset);
14 $Offset += Devel::Declare::toke_move_past_token($Offset);
18 $Offset += Devel::Declare::toke_skipspace($Offset);
23 if (my $len = Devel::Declare::toke_scan_word($Offset, 1)) {
24 my $linestr = Devel::Declare::get_linestr();
25 my $name = substr($linestr, $Offset, $len);
26 substr($linestr, $Offset, $len) = '';
27 Devel::Declare::set_linestr($linestr);
36 my $linestr = Devel::Declare::get_linestr();
37 if (substr($linestr, $Offset, 1) eq '(') {
38 my $length = Devel::Declare::toke_scan_str($Offset);
39 my $proto = Devel::Declare::get_lex_stuff();
40 Devel::Declare::clear_lex_stuff();
41 $linestr = Devel::Declare::get_linestr();
42 substr($linestr, $Offset, $length) = '';
43 Devel::Declare::set_linestr($linestr);
50 my $pack = Devel::Declare::get_curstash_name;
51 Devel::Declare::shadow_sub("${pack}::${Declarator}", $_[0]);
55 my $linestr = Devel::Declare::get_linestr;
56 substr($linestr, $Offset, 0) = $_[0];
57 Devel::Declare::set_linestr($linestr);
61 my $linestr = Devel::Declare::get_linestr;
62 if (substr($linestr, $Offset, length($_[0])) eq $_[0]) {
63 substr($linestr, $Offset, length($_[0])) = '';
64 Devel::Declare::set_linestr($linestr);
71 local ($Declarator, $Offset) = @_;
74 my $linestr = Devel::Declare::get_linestr;
75 if (substr($linestr, $Offset, 1) eq '{') {
76 substr($linestr, $Offset+1, 0) = ' BEGIN { FoomHandlers::inject_scope }; ';
77 Devel::Declare::set_linestr($linestr);
79 shadow(sub (&) { "foom?" });
84 my $linestr = Devel::Declare::get_linestr;
85 my $offset = Devel::Declare::get_linestr_offset;
86 substr($linestr, $offset, 0) = ';';
87 Devel::Declare::set_linestr($linestr);
99 Devel::Declare->setup_for(
102 const => \&FoomHandlers::const,
111 ::ok(1, 'Compiled as statement ok');