X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FComponentised.pm;h=b417de6bbebc4b57af885d01d34db5e9d4775ee3;hb=e5c6382908ee65577e53c0771629384d70959a3d;hp=47797cce14a32e4cb496edbf9def06c37d821e89;hpb=1b12190d4ca817eac91f48db668d8fe5c1983495;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Componentised.pm b/lib/DBIx/Class/Componentised.pm index 47797cc..b417de6 100644 --- a/lib/DBIx/Class/Componentised.pm +++ b/lib/DBIx/Class/Componentised.pm @@ -7,14 +7,12 @@ use warnings; use base 'Class::C3::Componentised'; use mro 'c3'; +use DBIx::Class::_Util 'get_subname'; use DBIx::Class::Carp '^DBIx::Class|^Class::C3::Componentised'; use namespace::clean; # this warns of subtle bugs introduced by UTF8Columns hacky handling of store_column # if and only if it is placed before something overriding store_column -# -# and also enforces C3 mro on all components -my $mro_already_set; sub inject_base { my $class = shift; my ($target, @complist) = @_; @@ -57,8 +55,7 @@ sub inject_base { or next; if ($sc ne $base_store_column) { - require B; - my $definer = B::svref_2object($sc)->STASH->NAME; + my ($definer) = get_subname($sc); push @broken, ($definer eq $existing_comp) ? $existing_comp : "$existing_comp (via $definer)" @@ -75,12 +72,6 @@ sub inject_base { unshift @target_isa, $comp; } - # only examine from $_[2] onwards - # C::C3::C already sets c3 on $_[1] - mro::set_mro( $_ => 'c3' ) for grep { - $mro_already_set->{$_} ? 0 : ( $mro_already_set->{$_} = 1 ) - } @_[1 .. $#_]; - $class->next::method(@_); }