12 our ($Declarator, $Offset);
15 $Offset += Devel::Declare::toke_move_past_token($Offset);
19 $Offset += Devel::Declare::toke_skipspace($Offset);
24 if (my $len = Devel::Declare::toke_scan_word($Offset, 1)) {
25 my $linestr = Devel::Declare::get_linestr();
26 my $name = substr($linestr, $Offset, $len);
27 substr($linestr, $Offset, $len) = '';
28 Devel::Declare::set_linestr($linestr);
37 my $linestr = Devel::Declare::get_linestr();
38 if (substr($linestr, $Offset, 1) eq '(') {
39 my $length = Devel::Declare::toke_scan_str($Offset);
40 my $proto = Devel::Declare::get_lex_stuff();
41 Devel::Declare::clear_lex_stuff();
42 $linestr = Devel::Declare::get_linestr();
43 substr($linestr, $Offset, $length) = '';
44 Devel::Declare::set_linestr($linestr);
51 my $pack = Devel::Declare::get_curstash_name;
52 Devel::Declare::shadow_sub("${pack}::${Declarator}", $_[0]);
56 my $linestr = Devel::Declare::get_linestr;
57 substr($linestr, $Offset, 0) = $_[0];
58 Devel::Declare::set_linestr($linestr);
62 my $linestr = Devel::Declare::get_linestr;
63 if (substr($linestr, $Offset, length($_[0])) eq $_[0]) {
64 substr($linestr, $Offset, length($_[0])) = '';
65 Devel::Declare::set_linestr($linestr);
72 local ($Declarator, $Offset) = @_;
74 my $name = strip_name;
75 my $str = "happy ".(defined $name ? "foom: ${name}" : "anonymous foom");
76 if (defined(my $proto = strip_proto)) {
90 Devel::Declare->setup_for(
93 const => \&FoomHandlers::const,
98 ::is(foom, "happy anonymous foom", "foom");
100 ::is(foom KABOOM, "happy foom: KABOOM", "foom KABOOM");
102 ::is(foom (zoom), "happy anonymous foom; zoom", "foom (zoom)");
104 ::is(foom KABOOM (zoom), "happy foom: KABOOM; zoom", "foom KABOOM (zoom)");