X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FAccessorGroup.pm;h=5ac4651c2e19e173a97994faa74250e0155f5222;hb=7dc14bc09910cb750e5fe503dfa18a97eed490d1;hp=12a8744b2042594794608711532fc6179552b0f8;hpb=d009cb7d393292037eff527a9f8bab93860224fb;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/AccessorGroup.pm b/lib/DBIx/Class/AccessorGroup.pm index 12a8744..5ac4651 100644 --- a/lib/DBIx/Class/AccessorGroup.pm +++ b/lib/DBIx/Class/AccessorGroup.pm @@ -5,16 +5,21 @@ use warnings; use base qw/Class::Accessor::Grouped/; use Scalar::Util qw/weaken blessed/; +use DBIx::Class::_Util 'fail_on_internal_call'; use namespace::clean; sub mk_classdata { + DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call; shift->mk_classaccessor(@_); } sub mk_classaccessor { my $self = shift; $self->mk_group_accessors('inherited', $_[0]); - $self->set_inherited(@_) if @_ > 1; + (@_ > 1) + ? $self->set_inherited(@_) + : ( DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call ) + ; } my $successfully_loaded_components; @@ -41,7 +46,11 @@ sub get_component_class { }; sub set_component_class { - shift->set_inherited(@_); + $_[0]->set_inherited($_[1], $_[2]); + + # trigger a load for the case of $foo->component_accessor("bar")->new + $_[0]->get_component_class($_[1]) + if defined wantarray; } 1;