1 package Devel::Declare::MethodInstaller::Simple;
3 use base 'Devel::Declare::Context::Simple';
10 sub install_methodhandler {
15 *{$args{into}.'::'.$args{name}} = sub (&) {};
18 my $ctx = $class->new(%args);
19 Devel::Declare->setup_for(
21 { $args{name} => { const => sub { $ctx->parser(@_) } } }
29 $self->skip_declarator;
30 my $name = $self->strip_name;
31 my $proto = $self->strip_proto;
32 my @decl = $self->parse_proto($proto);
33 my $inject = $self->inject_parsed_proto(@decl);
35 $inject = $self->scope_injector_call() . $inject;
37 $self->inject_if_block($inject);
39 my $pkg = $self->get_curstash_name;
40 $name = join( '::', $pkg, $name )
41 unless( $name =~ /::/ );
42 $self->shadow( sub (&) {
44 # So caller() gets the subroutine name
46 *{$name} = subname $name => $code;
49 $self->shadow(sub (&) { shift });
55 sub inject_parsed_proto {