From eb9a0d361b37c5b3a7d750385f6b3a3300301fbc Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 21 Feb 2011 00:26:12 -0600 Subject: test all inlining --- lib/MooseX/Bread/Board.pm | 1 + lib/MooseX/Bread/Board/Meta/Role/Attribute.pm | 4 ++-- lib/MooseX/Bread/Board/Meta/Role/Instance.pm | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 lib/MooseX/Bread/Board/Meta/Role/Instance.pm (limited to 'lib') diff --git a/lib/MooseX/Bread/Board.pm b/lib/MooseX/Bread/Board.pm index f40797e..fbf536b 100644 --- a/lib/MooseX/Bread/Board.pm +++ b/lib/MooseX/Bread/Board.pm @@ -6,6 +6,7 @@ my (undef, undef, $init_meta) = Moose::Exporter->build_import_methods( class_metaroles => { attribute => ['MooseX::Bread::Board::Meta::Role::Attribute'], class => ['MooseX::Bread::Board::Meta::Role::Class'], + instance => ['MooseX::Bread::Board::Meta::Role::Instance'], }, base_class_roles => ['MooseX::Bread::Board::Role::Object'], ); diff --git a/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm b/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm index 90a10e5..fe98bb7 100644 --- a/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm +++ b/lib/MooseX/Bread/Board/Meta/Role/Attribute.pm @@ -99,9 +99,9 @@ around inline_get => sub { my $self = shift; my ($instance) = @_; - return '((' . $self->inline_has($instance) . ')' . "\n" + return 'do { (' . $self->inline_has($instance) . ')' . "\n" . '? (' . $self->$orig($instance) . ')' . "\n" - . ': (' . $instance . '->get_service(\'' . $self->name . '\')->get))'; + . ': (' . $instance . '->get_service(\'' . $self->name . '\')->get) }'; }; no Moose::Role; diff --git a/lib/MooseX/Bread/Board/Meta/Role/Instance.pm b/lib/MooseX/Bread/Board/Meta/Role/Instance.pm new file mode 100644 index 0000000..93648e2 --- /dev/null +++ b/lib/MooseX/Bread/Board/Meta/Role/Instance.pm @@ -0,0 +1,9 @@ +package MooseX::Bread::Board::Meta::Role::Instance; +use Moose::Role; + +# XXX: ugh, this should be settable at the attr level, fix this in moose +sub inline_get_is_lvalue { 0 } + +no Moose::Role; + +1; -- cgit v1.2.3-54-g00ecf