Correct mistake in t/00describe_environment.t reporting of _TempExtlib
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / AccessorGroup.pm
index 12a8744..5ac4651 100644 (file)
@@ -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;