make native trait inlining work
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor / Native / Reader.pm
CommitLineData
5df54980 1package Moose::Meta::Method::Accessor::Native::Reader;
2
3use strict;
4use warnings;
5
245478d5 6our $VERSION = '1.19';
5df54980 7$VERSION = eval $VERSION;
8our $AUTHORITY = 'cpan:STEVAN';
9
8b9641b8 10use Moose::Role;
11
12with 'Moose::Meta::Method::Accessor::Native';
13
14requires '_return_value';
5df54980 15
16sub _generate_method {
17 my $self = shift;
18
53a4677c 19 my $inv = '$self';
e7724627 20 my $slot_access = $self->_inline_get($inv);
21
53a4677c 22 return (
23 'sub {',
24 $self->_inline_pre_body(@_),
25 'my ' . $inv . ' = shift;',
26 $self->_inline_curried_arguments,
27 $self->_reader_core($inv, $slot_access, @_),
28 '}',
29 );
e7724627 30}
31
32sub _reader_core {
53a4677c 33 my $self = shift;
34 my ($inv, $slot_access, @extra) = @_;
35
36 return (
37 $self->_inline_check_argument_count,
38 $self->_inline_process_arguments($inv, $slot_access),
39 $self->_inline_check_arguments,
40 $self->_inline_check_lazy($inv),
41 $self->_inline_post_body(@extra),
42 $self->_inline_return_value($slot_access),
43 );
5df54980 44}
45
53a4677c 46sub _inline_process_arguments { return }
e7724627 47
53a4677c 48sub _inline_check_arguments { return }
5df54980 49
8b9641b8 50no Moose::Role;
51
5df54980 521;