X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FSingleton%2FRole%2FMeta%2FClass.pm;fp=lib%2FMooseX%2FSingleton%2FRole%2FMeta%2FClass.pm;h=975e95412a304e3391ee3c851f1eba930842248a;hb=837c97931c840f5214147d87726e5d5295a99f53;hp=924a960a156e91b5f963f409741608eaa3982dea;hpb=181569bbc8d1da2c19ed500822a727cb50836d71;p=gitmo%2FMooseX-Singleton.git diff --git a/lib/MooseX/Singleton/Role/Meta/Class.pm b/lib/MooseX/Singleton/Role/Meta/Class.pm index 924a960..975e954 100644 --- a/lib/MooseX/Singleton/Role/Meta/Class.pm +++ b/lib/MooseX/Singleton/Role/Meta/Class.pm @@ -39,6 +39,27 @@ override _construct_instance => sub { return ${"$pkg\::singleton"} = super; }; +if ( $Moose::VERSION >= 1.9900 ) { + override _inline_params => sub { + my $self = shift; + + return + 'my $existing = do {', + 'no strict "refs";', + 'no warnings "once";', + '\${"$class\::singleton"};', + '};', + 'return ${$existing} if ${$existing};', + super(); + }; + + override _inline_extra_init => sub { + my $self = shift; + + return '${$existing} = $instance;'; + }; +} + no Moose::Role; 1;