11 use B::Hooks::EndOfScope;
13 our ($Declarator, $Offset);
16 $Offset += Devel::Declare::toke_move_past_token($Offset);
20 $Offset += Devel::Declare::toke_skipspace($Offset);
25 if (my $len = Devel::Declare::toke_scan_word($Offset, 1)) {
26 my $linestr = Devel::Declare::get_linestr();
27 my $name = substr($linestr, $Offset, $len);
28 substr($linestr, $Offset, $len) = '';
29 Devel::Declare::set_linestr($linestr);
38 my $linestr = Devel::Declare::get_linestr();
39 if (substr($linestr, $Offset, 1) eq '(') {
40 my $length = Devel::Declare::toke_scan_str($Offset);
41 my $proto = Devel::Declare::get_lex_stuff();
42 Devel::Declare::clear_lex_stuff();
43 $linestr = Devel::Declare::get_linestr();
44 substr($linestr, $Offset, $length) = '';
45 Devel::Declare::set_linestr($linestr);
52 my $pack = Devel::Declare::get_curstash_name;
53 Devel::Declare::shadow_sub("${pack}::${Declarator}", $_[0]);
57 my $linestr = Devel::Declare::get_linestr;
58 substr($linestr, $Offset, 0) = $_[0];
59 Devel::Declare::set_linestr($linestr);
63 my $linestr = Devel::Declare::get_linestr;
64 if (substr($linestr, $Offset, length($_[0])) eq $_[0]) {
65 substr($linestr, $Offset, length($_[0])) = '';
66 Devel::Declare::set_linestr($linestr);
73 local ($Declarator, $Offset) = @_;
76 my $linestr = Devel::Declare::get_linestr;
77 if (substr($linestr, $Offset, 1) eq '{') {
78 substr($linestr, $Offset+1, 0) = ' BEGIN { FoomHandlers::inject_scope }; ';
79 Devel::Declare::set_linestr($linestr);
81 shadow(sub (&) { "foom?" });
86 my $linestr = Devel::Declare::get_linestr;
87 my $offset = Devel::Declare::get_linestr_offset;
88 substr($linestr, $offset, 0) = ';';
89 Devel::Declare::set_linestr($linestr);
101 Devel::Declare->setup_for(
104 const => \&FoomHandlers::const,
113 ::ok(1, 'Compiled as statement ok');